Включите повторяющиеся строки в отношение многие ко многим - PullRequest
0 голосов
/ 08 мая 2019

У меня есть класс Event и класс Question.Они формируют отношения многие ко многим.В сводной таблице есть дополнительный столбец asking.

Моя база данных:

events (id)
questions (id)
event_question (id, event_id, question_id, asking)

Класс моего события:

class Event {
    public function questions() {
        return $this->belongsToMany(Question::class)
            ->withPivot('asking');
    }
}

Теперь, например, у меня может быть дубликатПары «событие-вопрос» в сводной таблице, но столбец сводки asking будет другим.

id   |  event_id  |  question_id  |  asking
-----+------------+---------------+--------------
1    |  5         | 10            | 'purchaser'
2    |  5         | 10            | 'attendee'

Я хочу, чтобы Eloquent извлекал обе строки, но вместо этого он возвращал только одну из них.

dd($event->questions->toArray());

// Should be 2 rows but there is only 1
[
  [
    'id'          => 1,
    'event_id'    => 5,
    'question_id' => 10,
    'pivot'       => [
      'asking' => 'attendee', // asking 'buyer' is missing
    ],
  ],
];

1 Ответ

0 голосов
/ 08 мая 2019

Решение этого довольно простое, мне просто нужно указать, какие столбцы различны:

class Event {
    public function questions() {
        return $this->belongsToMany(Question::class)
            ->withPivot('asking')
            ->selectRaw('DISTINCT questions.id, event_question.asking, questions.*');
    }
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...