在Laravel 5应用程序中,我有一个“用户”模型和一个“权限”模型,它们都有相应的表格,它们具有多对多的关系。还有一个数据透视表:“permission_user”。Laravel 5 - 访问多对多数据时出错
用户模型包含下面的方法:
public function permissions()
{
return $this->belongsToMany('App\Permission');
}
而且权限模型包含以下方法:
我一直访问用户权限自定义中间件与下面的代码,它一直在出色地工作直到今天。
$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源之前执行的最后的) 。在发生这件事的时候,我确实用Composer更新了Laravel,但认为Laravel资源中的某些东西不太可能导致问题。任何人都可以看到我可能在这里做错了什么,以及我如何解决它?
好吧,是的,修好了以前的版本。非常感谢您的帮助。我看到L5本周计划试用,所以没想到这会是问题。当发生变化时,我如何找到旧版本的名字,就像你给作曲家一样? – timmyc
@timmyc没问题!要找到版本名称,只需到这里:https://github.com/laravel/framework/commits/master并找到为您工作的提交。然后点击提交,它应该带你到这样的URL:https://github.com/laravel/framework/commit/9b108d85ce19300dfdd479fa4e05d9ea6e4e3abc而该网址的最后部分与所有疯狂的字母和数字是你需要的版本。 – John
@timmyc嗨,哥们,今天看起来像是修好了。您现在应该能够将作曲家恢复到原来的样子。 – John