列“身份证”在字段列表中的谊暧昧(Column 'id' in field list

2019-10-16 15:36发布

我在YII是新的。 努力实现控制器查询,下面是我的代码已经从控制器拍摄。

public function getCommentListByUser($user_id)
{
        $criteria = new CDbCriteria;
        $criteria->select = "username";
        $criteria->alias = "u";
            $criteria->condition = 'cmt.commented_userd_id  = '.$user_id;
            $criteria->join = 'JOIN tbl_taskcomment cmt ON  (cmt.commented_userd_id = u.id)';
            $criteria->order = 'cmt.id ASC';  
            $model = User::model()->findAll($criteria);  
            return $model;
}

当我跑的页面,我得到了下面的错误,

CDbCommand未能执行SQL语句:SQLSTATE [23000]:完整性约束违规:1052列“身份证”在字段列表是不明确的。 执行的SQL语句是:SELECT ID,用户名,电子邮件,createtime,lastvisit,超级用户,从状态tbl_users u JOIN tbl_taskcomment CMT ON(cmt.commented_userd_id = u.id)WHERE cmt.commented_userd_id = 1个ORDER BY cmt.id ASC

相反,取出由用户表中的用户名,它配备了带出来的别名都列。 我知道这个问题与别名相关。 我做错了这个语法以及代码。

好心的建议

Answer 1:

变化: $criteria->select = "username" to ==> $criteria->select = "u.username"

要么

删除: $criteria->alias = "u" and change $criteria->select = "username" to ==> $criteria->select = "t.username" and change all left join alias 'u.field_name' to ==> 't.field_name'



Answer 2:

这会帮助你:

http://www.yiiframework.com/doc/guide/1.1/en/database.arr#disambiguating-column-names



Answer 3:

你也许有两个表中的id列。 如果你需要从表中的列tbl_users你应该使用别名来获得每一列:

SELECT u.id, u.username, u.email, u.createtime, u.lastvisit, u.superuser, u.status FROM tbl_users u

而你的WHERE条件应该是:

WHERE u.id = 1 


Answer 4:

我想我遇到了一些问题,别名CDbCriteria
你可以试试默认别名(这是t )?



文章来源: Column 'id' in field list is ambiguous in YII
标签: php mysql yii