Laravel красноречивые условные отношения

Я пытаюсь установить условную связь в красноречивой модели на основе значения столбца таблицы, но это не работает.

Это код, который я использую:

 //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') во многих частях кода.

Вы не можете ссылаться на $this для получения свойств модели в методах отношений, поскольку модель еще не создана, она все еще является объектом запроса, когда вы вызываете ->with(..). TL; DR: вы не можете этого сделать

DevK 17.12.2018 03:08

Прохладный. Ты хоть представляешь, как я могу это сделать в модельном классе?

Lucas Santos 17.12.2018 03:09

Нет настоящего элегантного способа сделать что-то подобное. Это также обычно показатель плохого выбора дизайна. Лучше всего создавать разные отношения и вызывать их условно (используя ->load(..)) после загрузки исходного объекта.

DevK 17.12.2018 03:16

Я понимаю! Спасибо @devk!

Lucas Santos 19.12.2018 00:48
Стоит ли изучать PHP в 2023-2024 годах?
Стоит ли изучать PHP в 2023-2024 годах?
Привет всем, сегодня я хочу высказать свои соображения по поводу вопроса, который я уже много раз получал в своем сообществе: "Стоит ли изучать PHP в...
Symfony Station Communiqué - 7 июля 2023 г
Symfony Station Communiqué - 7 июля 2023 г
Это коммюнике первоначально появилось на Symfony Station .
Оживление вашего приложения Laravel: Понимание режима обслуживания
Оживление вашего приложения Laravel: Понимание режима обслуживания
Здравствуйте, разработчики! В сегодняшней статье мы рассмотрим важный аспект управления приложениями, который часто упускается из виду в суете...
Установка и настройка Nginx и PHP на Ubuntu-сервере
Установка и настройка Nginx и PHP на Ubuntu-сервере
В этот раз я сделаю руководство по установке и настройке nginx и php на Ubuntu OS.
Коллекции в Laravel более простым способом
Коллекции в Laravel более простым способом
Привет, читатели, сегодня мы узнаем о коллекциях. В Laravel коллекции - это способ манипулировать массивами и играть с массивами данных. Благодаря...
Как установить PHP на Mac
Как установить PHP на Mac
PHP - это популярный язык программирования, который используется для разработки веб-приложений. Если вы используете Mac и хотите разрабатывать...
0
4
1 051
0

Другие вопросы по теме