[英]Yii2 - How to filter a related model via a pivot table
这是我的第一个问题,我希望有人可以帮助我。
如何过滤相关模型(通过数据透视表)?
我有模型 A 、模型 A_B和模型 B 。 A_B是枢轴( id, a_id, b_id )
我在 GridView 中显示所有A实例,并轻松收集相关的B模型。 但完全不知道如何过滤那些B模型。
您可以通过使用 hasMany 关系和过滤器来使用多关系,如下所示。
模型 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']);
}
....
}
在编写过滤器查询时,添加如下关系。
模型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;
}
}
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.