Красноречивый вопрос об отношениях между 3 таблицами - PullRequest
0 голосов
/ 02 июня 2019

У меня есть эти 4 таблицы:

events (id, name, date)
drivers (id, first_name, last_name)
participants (id, number, event_id, driver_id, codriver_id)
penalties (id, event_id, participant_id)

Как я могу получить имя и фамилию водителя / codriver при отображении таблицы штрафов?

Я пробовал с этим, но не работает:

$grid->participant()->driver()->full_name();
$grid->participant()->codriver()->full_name();

Модель штрафа:

public function participant()
    {
        return $this->belongsTo(Participant::class);
    }

Модель участника:

public function driver()
    {
        return $this->belongsTo(Driver::class);
    }

    public function codriver()
    {
        return $this->belongsTo(Driver::class);
    }

Модель драйвера:

public function getFullNameAttribute()
    {
        return $this->first_name . ' ' . $this->last_name;
    }

Как я могу это сделать?

Спасибо

1 Ответ

0 голосов
/ 02 июня 2019

->relation_name() возвращает построитель запроса отношения:

Чтобы получить объект / объекты отношения, вы должны вызывать отношение как свойство, а не как функцию (то же самое с атрибутом full_name):

$grid->participant->driver->full_name;

Это равно:

$grid->participant()->first()->driver()->first()->full_name;
...