меня модель с таким методом:
public function getOwner()
{
return $this->type === TypesEnum::OWNER->value
? $this->car->owner()
: $this->car->driver();
}
Суть вопроса: Можно ли в модели использовать доступ к $this->type? Вроде как есть инфа, что с eager loading это не сработает, так как там this->type будет еще пустым. С другой стороны - некоторые пытаются меня убедить, что никаких проблем не будет и так делать можно.
Жадная загрузка работает на билдере, а не свойстве модели, так что будет пустым и возникнут конфликты. Чтобы это работало корректно, нужен инстанс конкретной модели.
спасибо. а есть тогда способ мне получить, то, что хочу из метода в модели? Или уже непосредственно в коде надо с конкретным экземпляром работать?
Метод в модели будет работать только в рамках самой модели. Я бы лучше сделал так: Model::with('car.owner', 'car.driver'), и уже на выходе при обработке готовых записей обрабатывал их в зависимости от типа. $model->type === ... ? $model->car->owner : $model->car->driver
да, изначально так и было. Но потом подумал, что можно в модель засунуть. А потом получил по шапке за такое и, видимо, придется вернуть как было 😂
Обсуждают сегодня