私は、下のコードのように、子と親の関係にあるUserモデルとRoleモデルを持っています。私は親を通して子にアクセスできますが、その逆はできません。子供の役割($ user-> role)にアクセスすると、私にIDだけが与えられます。ロールカラムにはロールテーブルに外部キーがありますが、その反対は機能しません。 は基本的には、 $の役割は役割がない一方で、ユーザーの役割、Eloquentモデルの関係は機能しません。クエリでもありません
Laravel-Debugbarは、さらに、ユーザは余分なクエリを実行しないことを示しているだけで彼のIDが表示されないすべてのユーザー する$ user->役割が含まれています。
ユーザーテーブル
id name email password remember_token client role created_at updated_at
役割テーブル
id name display_name description created_at updated_at
ユーザーモデル
namespace App;
use Illuminate\Notifications\Notifiable;
use Illuminate\Foundation\Auth\User as Authenticatable;
use Illuminate\Database\Eloquent\Model;
use Laratrust\Traits\LaratrustUserTrait;
use App\Client;
use App\Role;
use App\Permission;
class User extends Authenticatable
{
use LaratrustUserTrait;
use Notifiable;
protected $fillable = [
'name', 'email', 'password','role',
];
public function client(){
return $this->hasOne('App\Client', 'client');
}
public function role(){
return $this->belongsTo('App\Role')->withDefault();
}
}
ロールモデル
namespace App;
use Laratrust\Models\LaratrustRole;
use App\Permission;
use App\User;
class Role extends LaratrustRole
{
protected $fillable = [
'name', 'display_name', 'description',
];
public function GetHasPermission($perm){
return DB::table('permission_role')->where('role', $this->id)
->where('permission',$perm)->first()->value('type');
}
public function users(){
return $this->hasMany('App\User','role', 'id');
}
public function permissions(){
return $this->hasMany('App\Permission');
}
public function getName(){
return $this->name;
}
}
編集:私はLaratrustを使用していることに注意してください。
正確に。 Laravelはロールの代わりにrole_idを探しています –
すでに試しました。それが正しいと思われても動作しません。 –
@ Statharas.903私はコードが正しいと確信しています。助けが必要な場合は、このコードでどのようなエラーが発生しているか教えてください。 –