hasOne и where

Общие вопросы по использованию второй версии фреймворка. Если не знаете как что-то сделать и это про Yii 2, вам сюда.
Ответить
AlexSergeev1990
Сообщения: 109
Зарегистрирован: 2017.06.22, 10:43

hasOne и where

Сообщение AlexSergeev1990 »

Ребят подскажите
public function getHistory()
{
return $this->hasOne(HistoryPacients::className(), ['id' => 'historyID']);

}
как вывести данные с условием поля таблицы history_pacients.status_id=3?
сделал return $this->hasOne(HistoryPacients::className(), ['id' => 'historyID'])->where(['status_id'=>3]);
Ноль реакции выводит все записи.
kawabanga
Сообщения: 806
Зарегистрирован: 2013.10.12, 23:35
Откуда: Новосибирск

Re: hasOne и where

Сообщение kawabanga »

andWhere? хотя у вас должна всего одна запись быть по связи hasOne...
AlexSergeev1990
Сообщения: 109
Зарегистрирован: 2017.06.22, 10:43

Re: hasOne и where

Сообщение AlexSergeev1990 »

пробовал и andWhere и на hasMany менял...все равно выводит все записи,а мне нужны только поля со статусом 3
Nerf
Сообщения: 780
Зарегистрирован: 2015.01.29, 00:37

Re: hasOne и where

Сообщение Nerf »

Приведите код, который использует getHistory().
AlexSergeev1990
Сообщения: 109
Зарегистрирован: 2017.06.22, 10:43

Re: hasOne и where

Сообщение AlexSergeev1990 »

Nerf писал(а): 2018.01.11, 19:24 Приведите код, который использует getHistory().
в контроллере через ActiveDataProvider передаю в GridView модель Napravlenie::find()
Модели Napravlenie() содержит связь getHistory(). Сейчас он выводит все направления, а мне нужны только те направления, где поля связанной таблицы history_pacients.status_id=3
Nerf
Сообщения: 780
Зарегистрирован: 2015.01.29, 00:37

Re: hasOne и where

Сообщение Nerf »

Дак кто и как дергает getHistory()? Вам же верно написали, что связь через hasOne тупо не может вернуть несколько записей.

Гадалка подсказывает, что вы хотите:

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

$models = Napravlenie::find()->innerJoinWith(['history h'], false)->andWhere(['h.status_id' => 3])->all(); // groupBy() если нужно
Ответить