Я пытаюсь установить условную связь в красноречивой модели на основе значения столбца таблицы, но это не работает.
Это код, который я использую:
//RELATIONS
public function task_schedule()
{
if ($this->task_schedule_id === 0) {
return $this->belongsTo('TaskSchedule', 'hold_task_schedule_id', 'id');
} else {
return $this->belongsTo('TaskSchedule');
}
}
В основном я хочу использовать другой столбец, чтобы моя дочерняя модель была определена в отношении отношения.
scopeProfile ($ query) не сработает для меня, потому что я не хочу извлекать дочерний элемент в каждом отдельном запросе, а также Я использую Task-> with ('task_schedule') во многих частях кода.
Прохладный. Ты хоть представляешь, как я могу это сделать в модельном классе?
Нет настоящего элегантного способа сделать что-то подобное. Это также обычно показатель плохого выбора дизайна. Лучше всего создавать разные отношения и вызывать их условно (используя ->load(..)
) после загрузки исходного объекта.
Я понимаю! Спасибо @devk!
Вы не можете ссылаться на
$this
для получения свойств модели в методах отношений, поскольку модель еще не создана, она все еще является объектом запроса, когда вы вызываете->with(..)
. TL; DR: вы не можете этого сделать