Yii 2: невозможно создать отношение с условием для связанной таблицыPhp

Кемеровские программисты php общаются здесь
Ответить
Anonymous
 Yii 2: невозможно создать отношение с условием для связанной таблицы

Сообщение Anonymous »

Упрощая, у меня есть две таблицы:

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

Product: id, name
Datasheet: id, product_id
Где Product_id указывает на Products.id. Каждый продукт может иметь 0 или 1 таблицу данных.
В моем классе Product (который расширяет ActiveQuery) я создал это отношение

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

/**
* @return \yii\db\ActiveQuery
*/
public function getDatasheet()
{
return $this->hasOne(Datasheet::className(), ['product_id' => 'id']);
}
Теперь я могу делать запросы таким образом

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

$products_without_datasheet = Product::find()
->with('datasheet')
->all();
Что мне действительно нужно, так это получить только продукты без таблицы данных.
Я хотел бы создать «область действия» (как в yii 1), чтобы иметь возможность повторно использовать полученную таблицу условий.id IS NULL, потому что эта ситуация имеет много вариантов и будет использоваться во всем приложении.
Я не могу понять как создать отношение с добавленным фильтром, например getWithoutDatasheet(), который будет использоваться в качестве

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

Product::find()->with('withoutDatasheet')->all();
или

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

Product::find()->withoutDatasheet()->all();
Возможно ли это? И как?

Подробнее здесь: https://stackoverflow.com/questions/325 ... ated-table
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

Вернуться в «Php»