这是我的第一个问题,我希望有人能帮助我。
如何过滤相关模型(通过数据透视表)?
模型一个, 模型A_B ,和模型B 。 A_B 是主( id、a_id b_id
我在GridView中显示所有 a 实例,我收集容易相关的B模型。但是完全不知道如何过滤那些B模型。
您可以通过使用hasMany关系和过滤器来使用多关系,如下所示。
Model A文件
namespace app'models;
use Yii;
class A extends yii'db'ActiveRecord
{
....
function getRelated(){
return $this->hasMany(B::className(), ['id' => 'b_id'])
->viaTable(A_B::tableName(), ['a_id' => 'id']);
}
....
}
在编写过滤器查询时,添加如下关系:
Model ASeach文件
namespace app'models;
use Yii;
class ASearch extends app'models'A
{
var $title = null;
public function search($params) {
$modelA = A::find();
$dataProvider = new yii'data'ActiveDataProvider([
'query' => $query,
]);
$this->load($params);
$modelA->joinWith(['related']); //like this you can add more relations
$modelA->andFilterWhere(['like', 'b_title', $this->title]);
return $dataProvider;
}
}