Yii2滤波器相关模型
我有一个Yii2滤波器相关模型,yii,yii2,Yii,Yii2,我有一个Sale模型,它包含一个property\u idFK toproperty模型 在属性模型上,有一个字段office\u id Sale controller包含一个部分搜索视图,我正在使用该视图尝试通过office id进行筛选 在搜索函数中,我首先将关系设置为find(): 过滤条款: $query->andFilterWhere(['=', 'property.office_id', $params['SaleSearch']['office']]); 其中,$param
Sale
模型,它包含一个property\u id
FK toproperty
模型
在属性模型上,有一个字段office\u id
Sale controller包含一个部分搜索视图,我正在使用该视图尝试通过office id进行筛选
在搜索函数中,我首先将关系设置为find():
过滤条款:
$query->andFilterWhere(['=', 'property.office_id', $params['SaleSearch']['office']]);
其中,$params['SaleSearch']['office']
实际上包含正确的office\u id
我得到一个例外:
SQLSTATE[42S22]: Column not found: 1054 Unknown column 'property.office_id' in 'where clause'
The SQL being executed was: SELECT COUNT(*) FROM `sale` WHERE ((`settle_date` >= '2016-07-03') AND (`settle_date` <= '2016-07-31')) AND (`property`.`office_id` = '5')
Error Info: Array
(
[0] => 42S22
[1] => 1054
[2] => Unknown column 'property.office_id' in 'where clause'
我错过了什么 我认为您应该设置搜索的连接
$query->joinWith(['office' => function ($q) use ($params['SaleSearch']['office']]) {
$q->andFilterWhere(['=', 'property.office_id', $params['SaleSearch']['office']]);
}]);
我认为这会起作用,但如何在闭包函数中获得$params呢?它在那里给出了未定义的变量?对于在匿名函数中传递参数,您可以使用。。。“使用”。。。我已经更新了答案。。
public function getOffice()
{
return $this->hasOne(Office::className(), ['office_id' => 'office_id']);
}
$query->joinWith(['office' => function ($q) use ($params['SaleSearch']['office']]) {
$q->andFilterWhere(['=', 'property.office_id', $params['SaleSearch']['office']]);
}]);