Не понимаю как задать у таблицы алиас в CDbCriteria

У меня 3 таблицы;

users (

id_user mediumint(8) UNSIGNED AUTO_INCREMENT NOT NULL,

username varchar(25) NOT NULL,

password varchar(32) NOT NULL,

email varchar(255) NOT NULL,

date_created int(10) UNSIGNED NOT NULL DEFAULT ‘0’,

date_modified int(10) UNSIGNED NOT NULL DEFAULT ‘0’,

status tinyint(1) UNSIGNED NOT NULL DEFAULT ‘0’,

verifyCode int,

)

friends (

id_subscription mediumint(8) UNSIGNED AUTO_INCREMENT NOT NULL,

id_user mediumint(8) UNSIGNED NOT NULL DEFAULT ‘0’,

id_friend mediumint(8) UNSIGNED NOT NULL DEFAULT ‘0’,

date_created int(10) UNSIGNED NOT NULL DEFAULT ‘0’,

/* Keys */

PRIMARY KEY (id_subscription)

)

users_profiles (

id_profile mediumint(8) UNSIGNED AUTO_INCREMENT NOT NULL,

id_user mediumint(8) UNSIGNED NOT NULL DEFAULT ‘0’,

name varchar(20) NOT NULL,

surname varchar(25) NOT NULL,

birthday date,

day tinyint(2),

month tinyint(2),

year int(4),

avatar varchar(20) NOT NULL,

private tinyint(1) UNSIGNED NOT NULL DEFAULT ‘0’,

country varchar(255) NOT NULL,

city varchar(255) NOT NULL,

messages mediumint(8) UNSIGNED NOT NULL DEFAULT ‘0’,

friends mediumint(8) UNSIGNED NOT NULL DEFAULT ‘0’,

readers mediumint(8) UNSIGNED NOT NULL DEFAULT ‘0’,

url varchar(150) NOT NULL,

about text NOT NULL,

/* Keys */

PRIMARY KEY (id_profile)

)

class User extends CActiveRecord

{

public function relations()


{


	return array(


		'profile' => array(self::HAS_ONE, 'UserProfile', 'id_user'),


		'friends' => array(self::HAS_ONE, 'Friend', 'id_user')


	);


}

}

Делаю следующее:

	$criteria = new CDbCriteria();


	$criteria->condition = 'id_user = 85';





	$pages = new CPagination(User::model()->with('profile','friends')->together()->count($criteria));


	$pages->pageSize = 20;


	$pages->applyLimit($criteria);





	$users = User::model()->with('profile','friends')->together()->findAll($criteria);

И возникает ошибка:

CDbCommand не удалось исполнить SQL-запрос: SQLSTATE[23000]: Integrity constraint violation: 1052 Column ‘id_user’ in where clause is ambiguous

Не понимаю как задать алиас для таблицы. Пробовал так:

$criteria->condition = 'friends.id_user = 85';

но возникает ошибка: Unknown column ‘friends.id_user’ in ‘where clause’

Если не ошибаюсь, ситуацию похожая на решённую у меня в следующем примере (но не уверен на 100%, ещё полностью не проснулся :) )


public function actionShow()

	{

	    $post=$this->loadPost();

	    $comment=$this->newComment($post);


            $criteria=new CDbCriteria;

            $criteria->condition = 'status=' . COMMENT::STATUS_APPROVED; 


            $pages=new CPagination(Comment::model()->count($criteria));

            $pages->pageSize=self::PAGE_SIZE;

            $pages->applyLimit($criteria);


            $criteria->condition = 'comments.status = ' . COMMENT::STATUS_APPROVED; 


            $comments = $post->comments($criteria->toArray());


	    $this->render('show',array(

		'model'=>$post,

		'comments'=>$comments,

		'newComment'=>$comment,

                'pages' => $pages

	    ));

	}




Посмотрите как реализована работа с $criteria->condition, может идеологически где-то что-то и не то, но сработало :)

По аналогии когда пытаюсь дать алиас полю по названию таблицы все равно выдает ошибку


$criteria->condition = 'friends.id_user = 85';

$criteria = new CDbCriteria();

$criteria->condition = ‘id_user = 85’;

$pages = new CPagination(User::model()->with(‘profile’,‘friends’)->together()->count($criteria));

$pages->pageSize = 20;

$pages->applyLimit($criteria);

$criteria->condition = ‘friends.id_user = 85’;

$users = User::model()->with(‘profile’,‘friends’)->together()->findAll($criteria);

Так пробовали?

Пробовал, но это и не могло помочь.

По ходу работа с алиасами для таблиц в Yii сделана криво. Порыскал по инету и понял, что не только я задался этим вопросом. И нигде нет ответа на эту проблему… Будем ждать обновлений. А пока обходными путями или просто сделать поля таблиц уникальными




		$criteria = new CDbCriteria();

		$criteria->condition = 'id_user = 85';

		$users = User::model()->with('profile','friends')->together()->findAll($criteria);



->with(array(‘friends’=>array(‘condition’=>’??.id_user=85’) ну и т.д. пробовали?

Ну почему, у меня тоже в своё время была проблема с ambigous и после того, как стал переназначать condition, то она исчезла, хотя конечно, у вашей задачи могут быть свои особенности.