Я пытаюсь определить отношения n: m в Laravel, используя Eloquent. У меня есть следующие таблицы приведены:Laravel, Eloquent Отношение n: m
пользователей:
- ID
- Foo
вещи
- ID
users_things
- thing_id
- Foo
В моей модели пользователя я определил следующую функцию
public function things() {
return $this->hasMany('App\Thing', 'user_things', 'foo', 'thing_id');
}
В Things модели является аналогом
public function users() {
return $this->hasMany('App\User', 'user_things', 'thing_id', 'foo');
}
Когда Я звоню в контроллере
$user = User::find(1) //works
//$thing = Thing::find(1) works
$things = $user->things();
return $things
я получаю следующее сообщение: «Объект класса Осветите \ Database \ Eloquent \ Отношения \ HasMany не может быть преобразован в строку». Моя проблема заключается в том, что я не могу использовать идентификатор пользователя как внешний ключ в таблице комбинаций. Это должен быть столбец foo.
Ошибка, похоже, не имеет ничего общего с отношениями. Где-то в вашем коде объект преобразуется в строку. Посмотрите на сообщение об ошибке, должно быть имя файла и номер строки, где возникает ошибка. Вставьте эту часть кода. –
Что происходит, когда вы возвращаете dd ($ things)? '$ user-> things()' возвращает экземпляр Collection. Вместо этого используйте динамический атрибут и посмотрите, работает ли: '$ things = $ user-> things;' или '$ things = $ user-> things-> first();' – CrackingTheCode