Activerecord 未知列-CDbCriteria中的多个联接

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

我正在尝试从多个表中获取数据,结果出现以下错误: 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` 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数据提供程序中使用此选项