Laravel 5 - 访问多对多数据时出错


Laravel 5 - Error accessing many-to-many data

在Laravel 5应用程序中,我有一个"用户"模型和一个"权限"模型,两者都有相应的表,具有多对多关系。 还有一个数据透视表:"permission_user"。

用户模型包含以下方法:

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 第 177 行:参数 1 传递给 Illuminate''Database''Eloquent''Relations''BelongsToMany::hydratePivotRelation() 必须是数组类型,对象给定,调用 /server/sites/app/vendor/laravel/framework/src/Illuminate/Database/Eloquent/Relations/BelongsToMany.php 在第 158 行并定义

真的不知道这里发生了什么。为了更紧密地关注文档,我还尝试了以下方法:

foreach ('Auth::user()->permissions as $permission)
{
    // do something with $permission
}

但我得到了同样的事情(堆栈跟踪显示此处显示的行是在进入 Laravel 源代码之前执行的最后一个行)。 我确实在发生这种情况时用作曲家更新了Laravel,但认为Laravel源代码中的某些内容不太可能导致问题。 谁能看到我可能在这里做错了什么,以及我该如何解决它?

坐稳,我相信这实际上可能只是 Laravel 5 的当前错误(从技术上讲,它仍处于 alpha 阶段,因此可以预期进行重大更改)。

Taylor Otwell(Laravel的创造者)早些时候在推特上写道:

https://twitter.com/taylorotwell/status/553262692426059776

但是,看起来Laravel 5核心的几个部分仍然需要更新才能与此更改兼容。

如果你现在需要你的应用工作,只需在你的 composer.json 文件中更改它:

"Laravel/framework": "~5.0",

对此:

"Laravel/framework": "dev-master#9b108d85ce19300dfdd479fa4e05d9ea6e4e3abc",

然后运行作曲家更新。这将拉入昨天版本的Laravel 5,它正在工作。

一旦修复,请不要忘记将其更改回来!