繁体   English   中英

Yii2 - 如何通过数据透视表过滤相关模型

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM