Disambiguating Column Names

Приветик еще раз.

Весь вечер сижу и пытаюсь понять как разруливать эти Disambiguating Column Names.

Есть таблички:

Users (UID [PK], …)

Photos (PID [PK], …)

Favorites (FIV [PK], UID [FK], PID [FK])

Хочу выбрать из Favorites все фотки конкретного юзера. Пишу так




      $criteria = new CDbCriteria;

      $criteria->condition = "UID=:uid";

      $criteria->params = array(":uid" => $user->UID);

      $criteria->order = "DateOf DESC";


      $model = Favorites::model()->findAll($criteria);



Отлично всё работает. Теперь хочется получить те же данные, но сразу с данными фоток.

Проще говоря - сджойнить таблицы по PID полю, оставив тоже условие на UID.

Добавляю with("photos")




      $model = Favorites::model()->with("photos")->findAll($criteria);



Получаю ответ Integrity constraint violation: 1052 Column ‘UID’ in where clause is ambiguous.

Как указывать к какой конкретно таблицы идут эти условия и сортировки и так далее?

Favorites:relations такой




      return array(

            'photos'=>array(self::BELONGS_TO, 'Photos', 'PID'),

        );



Использую Yii 1.1RC

Попробуй сделать так:

поменяй

$criteria->condition = "UID=:uid";

на

$criteria->condition = "Favorites.UID=:uid";

Так пробовал сразу - не заработало.

Решил тем, что назвал поля в таблицах по-разному :)

Может и не спортивно, но головной боли меньше

внутрь with можно массивы передавать, в том числе и условия на выборку.

причем, знаки "??" автоматически заменятся на альяс таблицы.

что-то типа,

…->with(‘user’ => array(‘condition’ => ‘??.UID = :uid’, ‘params’ => array(…))->findAll