Столбец 'id' в списке полей неоднозначен в YII

Я новичок в 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, имя пользователя, email, createtime, lastvisit, superuser, статус FROM 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

Вместо того, чтобы извлекать имя пользователя из таблицы USER, он поставляется со всем столбцом без имени псевдонима. Я знал, что этот вопрос связан с псевдонимом. Что я сделал неправильно в этом синтаксисе, а также в коде.

Прошу совета

Или

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

ИЛИ

remove: $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'

Возможно, у вас столбец 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 

Думаю, я столкнулся с некоторыми проблемами с псевдонимами в CDbCriteria .
Можете ли вы попробовать псевдоним по умолчанию (который есть t )?