Laravel 5 - 访问多对多数据时出错
Laravel 5 - Error accessing many-to-many data
在一个 Laravel 5 应用程序中,我有一个 "User" 模型和一个 "Permission" 模型,它们都具有相应的 tables,具有多对多关系。还有一个枢轴table:"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 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 源中的某些东西不太可能导致问题。任何人都可以看到我在这里可能做错了什么,我该如何解决?
请稍等,我相信这实际上可能只是 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 版本。
一旦修复,请不要忘记将其改回!
在一个 Laravel 5 应用程序中,我有一个 "User" 模型和一个 "Permission" 模型,它们都具有相应的 tables,具有多对多关系。还有一个枢轴table:"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 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 源中的某些东西不太可能导致问题。任何人都可以看到我在这里可能做错了什么,我该如何解决?
请稍等,我相信这实际上可能只是 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 版本。
一旦修复,请不要忘记将其改回!