【发布时间】:2026-01-23 14:55:02
【问题描述】:
我正在尝试使用 Eloquent 获取用户权限
我有 3 张桌子,
第一个是users表,
第二个是权限表
第三个是user_permissions
结构很简单
users
-id
-name
permissions
-id
-name
user_permissions
-user_id
-permission_id
-read
-write
-update
-delete
这是显示用户权限的代码:
$user = App\User::find(1)->first();
foreach($user->permissions as $permission){
echo "Read".$permission->pivot->read."<br>";
echo "Write".$permission->pivot->write."<br>";
echo "Update".$permission->pivot->update."<br>";
echo "Delete".$permission->pivot->delete."<br>";
}
当我以这种方式(在用户模型中)定义关系时,一切正常:
public function permissions()
{
return $this->belongsToMany('App\Permission','user_permissions')->withPivot('read', 'create','update','delete');
}
但我想以另一种方式编写它,因为我不想选择我需要的字段,我只想选择它们,所以当我这样写时,我得到一个错误:
public function permissions()
{
return $this->belongsToMany('App\Permission','user_permissions')->using('App\UserPermission');
}
这是我的错误:
Builder.php 第 2440 行中的 BadMethodCallException: 调用未定义的方法 Illuminate\Database\Query\Builder::using()
【问题讨论】:
-
你有什么 Laravel 版本?
标签: php laravel laravel-5 eloquent laravel-eloquent