“ andFilterWhere”在yii2中可与“ joinWith()”一起正常使用,但不适用于与“ with()”一起使用

问题描述 投票:0回答:1
我正在yii2工作。

[表中有employeecompany员工包含company_id

如果我使用joinWith(),我的过滤器搜索运行正常

$query = Employee::find(); $query->joinWith(['company']); //and below is the filterwhere ->andFilterWhere(['like', 'company.name', $this->company_id]);

但是问题出在我使用with()进行查询时>

$query = Employee::find()->with(['company']); //when query contain with() then this filter is not working. ->andFilterWhere(['like', 'company.name', $this->company_id]);

[当我使用with()时出现错误

Database Exception – yii\db\Exception SQLSTATE[42S22]: Column not found: 1054 Unknown column 'company.name' in 'where clause' The SQL being executed was: SELECT COUNT(*) FROM `employee` WHERE `company`.`name` LIKE '%1%'

这里是员工与公司的关系:

public function getCompany(){ return $this->hasOne(Company::className(), ['id'=> 'company_id']); }

任何人都可以帮助我或指导我如何使用查询中的with()正确过滤数据?谢谢。

我正在yii2工作。有员工,公司表员工包含company_id。如果我使用joinWith()$ query = Employee :: find();,我的过滤器搜索运行正常。 $ query-> ...

yii yii2
1个回答
0
投票
当您需要按相关表中的列进行筛选时,无法交换joinWith()with()方法。这是因为这些方法做的事情完全不同。
© www.soinside.com 2019 - 2024. All rights reserved.