首页 文章

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

提问于
浏览
0

在Laravel 5应用程序中,我有一个“用户”模型和一个“权限”模型,两者都有相应的表,具有多对多关系 . 还有一个数据透视表:“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:传递给Illuminate \ Database \ Eloquent \ Relations \ BelongsToMany :: hydratePivotRelation()的参数1必须是类型数组,给定对象,在/ Server / sites / app / vendor / laravel /中调用第158行的framework / src / Illuminate / Database / Eloquent / Relations / BelongsToMany.php并定义

真的不确定这里发生了什么 . 为了更密切地关注文档,我也试过这个:

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

但我得到同样的东西(堆栈跟踪显示这里显示的行是在进入Laravel源之前执行的最后一行) . 我确实在发生这种情况的时候用Composer更新了Laravel,但是认为Laravel源代码中的某些东西不太可能导致问题 . 任何人都可以看到我在这里做错了什么,以及我如何解决它?

1 回答

  • 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,它正在运行 .

    一旦修复,别忘了改回来!

相关问题