Как в yii1 в запросе findAll указать условие для нужной таблицы БД?

Общие вопросы по использованию фреймворка. Если не знаете как что-то сделать и это про Yii, вам сюда.
Ответить
b.alex
Сообщения: 12
Зарегистрирован: 2019.06.04, 07:13

Как в yii1 в запросе findAll указать условие для нужной таблицы БД?

Сообщение b.alex »

Есть запрос со связями, мне нужно чтобы это условие 'client_id = :client_id', array(':client_id' => 1) Применялось только для модели Contacts и ее таблицы. В том виде что сейчас запрос, выдает ошибку CDbCommand не удалось исполнить SQL-запрос: SQLSTATE[23000]: Integrity constraint violation: 1052 Column 'client_id' in where clause is ambiguous
Из за того что поле client_id существует в нескольких таблицах, и нужно указать в условии, для какой таблицы его применять. Вот запрос. Как это сделать правильно?
Вот сам запрос

Код: Выделить всё

$model= Contacts::model()->with(
                'staffCompanies',
                'category',
                'staffCompanies.contactsFavourites',
                'staffCompanies.phoneStaffCompanies',
                'staffCompanies.networkStaffCompanies',
                'staffCompanies.emailStaffCompanies',
                'staffCompanies.messengersStaffCompanies'
        )->findAll('client_id = :client_id', array(':client_id' => 1));
ПС
Нагуглил что нужно сделать так

Код: Выделить всё

findall('table.client_id = :client_id', …)
Сделал так

Код: Выделить всё

findall('сontacts.client_id = :client_id', …)
Не работает CDbCommand не удалось исполнить SQL-запрос: SQLSTATE[42S22]: Column not found: 1054 Unknown column 'contacts.client_id' in 'where clause'

Посмотре в дебагере, в этом запросе первую нужную мне таблицу он обозначает буквой t сделал вот так 't.client_id = :user_client_id', array(':user_client_id' => 1) и все заработало
Правильно ли это?
Аватара пользователя
yiijeka
Сообщения: 3103
Зарегистрирован: 2012.01.28, 09:14
Откуда: Беларусь
Контактная информация:

Re: Как в yii1 в запросе findAll указать условие для нужной таблицы БД?

Сообщение yiijeka »

Лучше получить alias таблицы из Contacts

https://www.yiiframework.com/doc/api/1. ... ias-detail
Ответить