Извлечение пользовательских полей из дочерней модели ребенка в laravel eloquent - PullRequest
0 голосов
/ 24 мая 2018

Я пытаюсь получить пользовательские поля из модели, используя оператор with() в laravel.Когда я просто получаю все поля, дочерний объект работает нормально, но когда я пытаюсь получить только некоторые поля этого дочернего объекта, он возвращает мне следующую ошибку: Integrity constraint violation: 1052 Column 'id' in field list is ambiguous, ниже я покажу, как яя делаю эти запросы.

Когда я выполняю следующий запрос, он работает:

 $cfps = CallForPaper::select('id', 'speech_id')->with([
            'speech:id,title,description',
            'speech.speakers'
         ])->get();

Но когда я выполняю код ниже, он возвращает ошибку, которая у меня естьупомянутое выше.

$cfps = CallForPaper::select('id', 'speech_id')->with([
            'speech:id,title,description',
            'speech.speakers:id,name,email'
         ])->get();

Примечание: , чем только изменение в этом коде является строка: 'speech.speakers:id,name,email'

в моей модели Речь ,соотношение speakers следующее:

public function speakers()
    {
        return $this->belongsToMany(Speaker::class, 'speech_speaker');
    }

1 Ответ

0 голосов
/ 24 мая 2018

Вам необходимо определить имя_таблицы для идентификаторов, которые вы выбираете:

$cfps = CallForPaper::select('id', 'speech_id')->with([
    'speech:TABLE_NAME.id,title,description',
    'speech.speakers:TABLE_NAME.id,name,email'
])->get();

Вы также можете сделать следующее, т.е.переименуйте идентификатор:

$cfps = CallForPaper::select('id', 'speech_id')->with([
   'speech:TABLE_NAME.id as speechID,title,description',
   'speech.speakers:TABLE_NAME.id as speakerID,name,email'
])->get();
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...