我有一个Sale
模型,其中包含property_id
FK到Property
模型。
在属性模型上,有一个字段office_id
。
Sale控制器包含一个部分_search视图,我用它来尝试通过office_id进行过滤。
在搜索功能中,我首先将关系设置为find():
$query = sale::find()->with([
'property',
'listerSaleStaff',
'listerSaleStaff.staff',
'sellerSaleStaff',
'sellerSaleStaff.staff',
]);
过滤条款:
$query->andFilterWhere(['=', 'property.office_id', $params['SaleSearch']['office']]);
其中$params['SaleSearch']['office']
确实包含正确的office_id
我收到了PDOException:
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'
属性模型确实包含关系:
public function getOffice()
{
return $this->hasOne(Office::className(), ['office_id' => 'office_id']);
}
我缺少什么?
答案 0 :(得分:0)
我认为你应该设置搜索联接
$query->joinWith(['office' => function ($q) use ($params['SaleSearch']['office']]) {
$q->andFilterWhere(['=', 'property.office_id', $params['SaleSearch']['office']]);
}]);