Activerecord Yii筛选器搜索适用于一个关系,但不适用于其他关系
我使用的是Yii GridView过滤器,我的数据来自Purcahses表。 那张桌子与 1.供应商 2.客户 以下是我在购买模式中的关系Activerecord Yii筛选器搜索适用于一个关系,但不适用于其他关系,activerecord,yii,cgridview,Activerecord,Yii,Cgridview,我使用的是Yii GridView过滤器,我的数据来自Purcahses表。 那张桌子与 1.供应商 2.客户 以下是我在购买模式中的关系 'vendor' => array(self::BELONGS_TO, 'Vendors', 'Vendor'), 'client' => array(self::BELONGS_TO, 'Clientsinfo', 'clientID'), 我在admin视图中使用了这种关系,下面是admin.php文件的代码 $this->wid
'vendor' => array(self::BELONGS_TO, 'Vendors', 'Vendor'),
'client' => array(self::BELONGS_TO, 'Clientsinfo', 'clientID'),
我在admin视图中使用了这种关系,下面是admin.php文件的代码
$this->widget('zii.widgets.grid.CGridView', array(
'id' => 'purchases-grid',
'dataProvider' => $model->search(),
'filter' => $model,
'columns' => array(
array(
'name' => 'Vendor',
'value' =>'$data->vendor->VendorName',
),
array(
'name' => 'clientID',
'value' =>'$data->client->Company'
),
array(
'name' => 'PurchaseType',
'value' => 'Purchasetype::model()->findByPk($data->PurchaseType)->PurchaseType',
'filter' => '',
),
),
));
最后是模型搜索函数,它与和一起使用,从其他表中获取数据
public function search() {
$criteria = new CDbCriteria;
$criteria->together = true;
$criteria->with = array('vendor');
$criteria->with = array('client');
$criteria->compare('PurchaseType', $this->PurchaseType);
$criteria->compare('vendor.VendorName', $this->Vendor, true);
$criteria->compare('client.Company', $this->clientID, true);
return new CActiveDataProvider($this, array(
'criteria' => $criteria,
));
}
成功地从客户机获取数据,但当我使用供应商fitter时,它会在下面抛出错误
CDB异常
CDbCommand无法执行SQL语句:SQLSTATE[42S22]:找不到列:1054未知列
“where子句”中的“vendor.VendorName”。执行的SQL语句是:SELECT COUNTDISTINCT t.PurchaseID
在t.clientID=client.ClInfoID上从t离开外部连接clientsinfo客户端
其中Vendor=:ycp0和Vendor.VendorName类似:ycp1 C:\xampp\htdocs\laurenparker\framework
\db\CDbCommand.php:5430 C:\xampp\htdocs\laurenparker\framework\db\CDbCommand.php433:CDbCommand-
queryInternal'fetchColumn',0,数组
你在标准中凌驾于关系之上。更改此项:
$criteria->with = array('vendor');
$criteria->with = array('client');
为此:
$criteria->with = array('vendor', 'client');
您只对语法进行了标准化,但这不是解决方案,我已经尝试过很多次了。它不是标准化,正如我所说的,您正在使用属性覆盖。如果在此之后您仍在使用供应商关系,则它将不起作用。在CDBEException中,您看到,您的查询中没有与供应商的关系。@Yupik感谢兄弟,我刚从联系,并根据您的建议更改代码,它开始工作,谢谢: