在Laravel 5应用程序中,我有一个" User"模型和"权限"具有相应表格的模型,具有多对多关系。还有一个数据透视表:" permission_user"。
User模型包含以下方法:
public function permissions()
{
return $this->belongsToMany('App\Permission');
}
Permission模型包含以下方法:
public function users()
{
return $this->belongsToMany('App\User');
}
我一直在使用以下代码访问自定义中间件中的用户权限,并且它一直在精彩地工作到今天。
$permissions = \Auth::user()->permissions()->get();
突然间,这是打破了。我收到以下错误:
BelongsToMany.php第177行中的ErrorException:参数1传递给 照亮\数据库\雄辩\关系\ 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源之前执行的最后一行)。在发生这种情况的时候,我确实用Composer更新了Laravel,但是认为Laravel源代码中的某些东西不太可能导致问题。任何人都可以看到我在这里做错了什么,以及我如何解决它?
答案 0 :(得分:1)
请稍等一下,我相信这实际上可能只是Laravel 5的一个当前错误(技术上仍然是alpha版本,因此可以预期会发生重大变化)。
泰勒奥特威尔(Laravel的创造者)早先发了推文:
https://twitter.com/taylorotwell/status/553262692426059776
然而,看起来Laravel 5核心的几个部分仍需要更新才能与此更改兼容。
如果您现在需要应用程序正常工作,只需在composer.json文件中进行更改:
" laravel / framework":" ~5.0",
到此:
" laravel / framework":" dev-master#9b108d85ce19300dfdd479fa4e05d9ea6e4e3abc",
然后运行作曲家更新。这将推出昨天版本的Laravel 5,它正在运行。
一旦修好,别忘了改回来!