【发布时间】:2021-01-04 05:35:54
【问题描述】:
我有一个简单的用户权限系统,由 3 个表组成:用户、权限和数据透视表权限_用户。
这是用户模型:
<?php
namespace App;
use Illuminate\Contracts\Auth\MustVerifyEmail;
use Illuminate\Foundation\Auth\User as Authenticatable;
use Illuminate\Notifications\Notifiable;
class User extends Authenticatable
{
use Notifiable;
/**
* The attributes that are mass assignable.
*
* @var array
*/
protected $fillable = [
'name', 'email', 'password',
];
/**
* The attributes that should be hidden for arrays.
*
* @var array
*/
protected $hidden = [
'password', 'remember_token',
];
/**
* The attributes that should be cast to native types.
*
* @var array
*/
protected $casts = [
'email_verified_at' => 'datetime',
];
public function permissions()
{
return $this->belongsToMany('App\Permission');
}
}
这是权限模型:
<?php
namespace App;
use Illuminate\Database\Eloquent\Model;
class Permission extends Model
{
/**
* The attributes that are mass assignable.
*
* @var array
*/
protected $fillable = [
'name', 'description', 'level', 'parentpermission',
];
public function users()
{
return $this->belongsToMany('App\User');
}
}
现在,当我尝试获取当前登录用户的所有权限时:
$user_permissions = Auth::user()->permissions()->get();
它可以正常工作。
但是当我尝试像这样获得另一个用户权限时:
$user_permissions = User::where('id', '=', $userid)->permissions()->get();
我收到以下错误:
Method Illuminate\Database\Eloquent\Collection::permissions does not exist.
我该怎么做?
【问题讨论】:
标签: php laravel eloquent model pivot-table