Activerecord 未知列-CDbCriteria中的多个联接
我正在尝试从多个表中获取数据,结果出现以下错误: SQL:SQLSTATE[42S22]:未找到列:“字段列表”中的1054未知列“p.firstname”Activerecord 未知列-CDbCriteria中的多个联接,activerecord,join,yii,Activerecord,Join,Yii,我正在尝试从多个表中获取数据,结果出现以下错误: SQL:SQLSTATE[42S22]:未找到列:“字段列表”中的1054未知列“p.firstname” $criteria = new CDbCriteria; $criteria->select = 'ohu_id, hash, p.firstname, p.surname, p.city, u.email AS Email'; $criteria->join = 'LEFT JOIN `profiles
$criteria = new CDbCriteria;
$criteria->select = 'ohu_id, hash, p.firstname, p.surname, p.city, u.email AS Email';
$criteria->join = 'LEFT JOIN `profiles` p ON p.user_id = user_id';
$criteria->join = 'LEFT JOIN users u ON user_id = u.id';
$criteria->condition = 'offer_id = :oID';
$criteria->params = array(':oID' => $_GET['id']);
$model = MyModel::model()->findAll($criteria);
有人知道我做错了什么吗?
或者有更好的方法获取相关数据吗?最好显示数据库结构。但这里的解决方案是使用左连接连接多个表 连接表的代码:
$criteria->select = 'ohu_id, hash, p.firstname, p.surname, p.city, u.email AS Email';
$criteria->alias = 'c';
$criteria->join = 'LEFT JOIN profiles p ON (p.user_id = c.user_id) LEFT JOIN users u ON (c.user_id = u.id)';
希望能对你有所帮助。你犯的错误和我犯的一样,呵呵 您正在用第二个联接覆盖第一个联接,而不是附加第二个联接
$criteria->join = "join ...."; //first join
$criteria->join .= "join ...."; //second join
cheers实际上,使用一些“with”子句会更好:
$criteria->with = array(
'profiles '=>array(
'select'=>'profiles.user_id',
'together'=>true
),
'users'=>array(
'select'=>'users.id',
'together'=>true
)
);
您也可以在模型搜索CGridView数据提供程序中使用此选项