Php 如何在CActiveDataProivder yii中添加带模型的别名
我有一个带有“type”属性的用户模型。以及带有“标题”的产品型号。这是我的密码Php 如何在CActiveDataProivder yii中添加带模型的别名,php,yii,Php,Yii,我有一个带有“type”属性的用户模型。以及带有“标题”的产品型号。这是我的密码 $criteria = new CDbCriteria; $criteria->addCondition('type = "ABC"'); $criteria->mergeWith ( array ( 'with' => 'products' ) ); $criteria->mergeWith ( array ( '
$criteria = new CDbCriteria;
$criteria->addCondition('type = "ABC"');
$criteria->mergeWith ( array (
'with' => 'products'
) );
$criteria->mergeWith ( array (
'condition' => "`products`.title LIKE '". $model->title ."'",
'together' => true
) );
$dataProvider = new CActiveDataProvider('User', array(
'criteria' => $criteria,
));
它给出了以下错误:-
CDbCommand failed to execute the SQL statement: SQLSTATE[23000]:
Integrity constraint violation: 1052 Column 'type' in where clause is ambiguous
我的问题是,如何使用上述方法为用户模型添加别名,以便User.type=“ABC” 试着这样做:
$criteria = new CDbCriteria;
$criteria->addCondition('table_name.type = "ABC"');
$criteria->mergeWith ( array (
'with' => 'products'
) );
$criteria->mergeWith ( array (
'condition' => "`products`.title LIKE '". $model->title ."'",
'together' => true
) );
$dataProvider = new CActiveDataProvider('User', array(
'criteria' => $criteria,
));
如果不起作用,请用整个查询粘贴完整错误谢谢您的回复。我试过这个,但不起作用。未找到列:1054未知列“User.type”在“where子句”中是否确定表名为:User?也许在mysql数据库中,表的名称是user???别忘了mysql中的casesensetive。是的,表名是“User”,感谢您的回复,是的,它正在使用t.type,但是如果我们明确地想为User表添加别名,该怎么办呢?对不起,兄弟,无法帮到您。Yii需要这些别名来创建嵌套对象,所以我从未尝试挑战它的酷功能。
$criteria = new CDbCriteria;
$criteria->compare('t.type' => "ABC");
$criteria->with= array('products'=>array('on'=>"title LIKE '$model->title'"));
$criteria->together=true;
$dataProvider = new CActiveDataProvider('User', array(
'criteria' => $criteria,
));