В приложении Laravel 5 у меня есть модель «Пользователь» и модель «Разрешение», как с соответствующими таблицами, которые имеют отношение «многие ко многим». Существует также сводная таблица: «permission_user».Laravel 5 - Ошибка при доступе к данным «многие ко многим»
Модель пользователя содержит следующий метод:
public function permissions()
{
return $this->belongsToMany('App\Permission');
}
И модель Разрешения содержит следующий метод:
public function users()
{
return $this->belongsToMany('App\User');
}
Я доступ права доступа пользователей в пользовательском промежуточном слое с помощью следующего кода, и он отлично работает до сегодняшнего дня.
$permissions = \Auth::user()->permissions()->get();
Вскользь это ломается. Я получаю следующую ошибку:
ErrorException in BelongsToMany.php line 177: Argument 1 passed to Illuminate\Database\Eloquent\Relations\BelongsToMany::hydratePivotRelation() must be of the type array, object given, called in /Server/sites/app/vendor/laravel/framework/src/Illuminate/Database/Eloquent/Relations/BelongsToMany.php on line 158 and defined
Действительно не уверен, что здесь происходит. В попытке более внимательно следить за документы, я попытался это:
foreach (\Auth::user()->permissions as $permission)
{
// do something with $permission
}
Но я получаю то же самое (трассировка стека показывает, что линии, показанные здесь, являются последними, выполненные перед заголовком в источник Laravel) , Я обновил Laravel с Composer примерно в то время, когда это произошло, но подумал, что вряд ли что-то из источника Laravel вызвало проблему. Может ли кто-нибудь увидеть, что я могу делать неправильно здесь, и как я могу это исправить?
Ах, да, исправлено с предыдущей версией. Большое спасибо за вашу помощь. Я видел, что на этой неделе L5 нацелился на бета-версию, поэтому не ожидал, что это будет проблемой. Когда происходят нарушения, как мне найти старые имена версий, как вы делали, чтобы дать композитору? – timmyc
@timmyc Нет проблем! Чтобы найти имя версии, просто перейдите сюда: https://github.com/laravel/framework/commits/master и найдите фиксацию, которая работает для вас. Затем нажмите на эту фиксацию, и она приведет вас к URL-адресу, подобному этому: https://github.com/laravel/framework/commit/9b108d85ce19300dfdd479fa4e05d9ea6e4e3abc И последняя часть этого URL-адреса со всеми сумасшедшими буквами и номером - это нужная вам версия , – John
@timmyc Эй, приятель, похоже, что это было исправлено сегодня. Теперь вы должны вернуть своего композитора обратно, как это было. – John