繁体   English   中英

PivotModel在laravel中扩展了Pivot,如何获取PivotModel关系数据

[英]PivotModel extends Pivot in laravel how to get the PivotModel relation data

我想通过PivotModel来管理用户和角色,例如User属于ToMany角色和Role属于ToMany用户,因此扩展了Pivot的数据透视模型名称PivotModel,如何与PivotModel和User建立关系,从PivotModel像PivotModel一样从PivotModel获取数据,其中role_id = 1

我很确定$model->pivot可以让您访问相关数据透视表条目中的任何数据,而不管该表被调用或是否具有模型类,只要您的模型关系方法是设置多对多。

不要为您的数据透视模型; 没必要 如果您同时具有角色和用户模型,则可以将关系定义为:

// User Model
public function roles(){
   return $this->belongsToMany(Role::class, $table, $foreignKey, $localKey);
}

// Role Model
public function users(){
   return $this->belongsToMany(User::class, $table, $foreignKey, $localKey);
}

只要确保将$table$foreignKey$localKey为值即可。 如果您的表/列名称一致( roles_usersuser_idrole_idid等),Laravel可以找出它们

然后,如果您要从数据透视表行访问任何数据,请添加

return $this->belongsToMany(...)->withPivot(["column_1", "column_2", ...]);

然后,您可以使用->pivot->{column}访问器访问它们:

foreach($user->roles AS $role){
  dd($role->pivot->column_1); // Etc.
}

有许多可以为您完成此操作的软件包,例如Cartalyst Sentinel( https://cartalyst.com/manual/sentinel/2.0 ),因此请查看这些软件包以获取更多信息。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM