Проблемаконструктор запросов на hasMany отношения
Я создаю API с Laravel. Каждый сервер может иметь более одного контакта, и каждый контакт принадлежит одному серверу - как таковые, контакты настроены с отношением belongsTo
, а серверы имеют отношение hasMany
к контактам.
Пользователь может иметь много серверов через свои отношения hasMany
. Таким образом, при создании сервера мы просто вызываем $user->server()->create([values])
, который работает отлично.
Вопрос заключается в том, что когда мы пытаемся вызвать его дальше, как и с контактами - мы попали в стену, где мы получаем:
Call to undefined method Illuminate\Database\Query\Builder::contacts()
При использовании: $user->server()->contacts()->create([])
.
Метод есть в модели сервера. У нас также есть отношение hasManyThrough на пользовательской модели, указав, что у пользователя много контактов через серверы.
При вызове $user->contact()->create([])
, вместо этого мы получаем:
Call to undefined method Illuminate\Database\Query\Builder::create()
Кто-нибудь есть ключ, что может быть причиной этого? Не могут ли построители запросов не допускать такого типа цепочки, или я не вижу чего-то явно очевидного? Как вы можете видеть, я пробовал несколько разных методов, но, похоже, не мог создать рабочий результат.
Cheers!
Я уверен, что вы не можете создать через 'hasManyThrough'. Пример, который Laravel дает для этих отношений «пост» и «страна» через «пользователь». Почта может принадлежать Стране, если ее Пользователь является частью этой страны. По этой логике вы пытаетесь создать страну из должности. Кажется неправдой. – Josh
@ Jaw.sh Это имеет смысл - но почему это не будет работать через HasMany? – CmdrSharp
Не знаю. API Laravel 5.2 говорит, что отношение 'HasMany' имеет функцию' create() '. Что-то еще не так. https://laravel.com/api/5.1/Illuminate/Database/Eloquent/Relations/HasMany.html#method_create – Josh