如何在 laravel 8 的 pivot_table 中调用其 id 作为 foreign_id 传递的主表中的列?
Posted
技术标签:
【中文标题】如何在 laravel 8 的 pivot_table 中调用其 id 作为 foreign_id 传递的主表中的列?【英文标题】:how to call the column from main table whose id is being passed as foreign_id in pivot_table in laravel 8? 【发布时间】:2021-09-30 08:00:31 【问题描述】:我在从主表和数据透视表中获取列时遇到问题。 所以我有两个表名:用户和角色以及一个名为 role_user 的数据透视表。 这是用户表的迁移:
Schema::create('users', function (Blueprint $table)
$table->engine = 'InnoDB';
$table->id();
$table->string('name');
$table->string('email')->unique();
$table->timestamp('email_verified_at')->nullable();
$table->string('password');
$table->rememberToken();
$table->timestamps();
);
这里是角色迁移:
Schema::create('roles', function (Blueprint $table)
$table->id();
$table->string('name');
$table->string('slug')->nullable();
$table->timestamps();
);
这里是数据透视表的迁移:
Schema::create('role_user', function (Blueprint $table)
$table->engine = 'InnoDB';
$table->id();
$table->unsignedBigInteger('user_id');
$table->unsignedBigInteger('role_id');
$table->foreign('user_id')->references('id')->on('users');
$table->foreign('role_id')->references('id')->on('roles');
$table->timestamps();
);
这是 phpMyAdmin 中 role_user 表中的数据: enter image description here
以下是关系: 用户:
public function roles()
return $this->belongsToMany(role::class,'role_user','role_id','user_id')->using(RoleUser::class);
和角色:
public function users()
return $this->belongsToMany(User::class,'role_user','user_id','role_id')->using(RoleUser::class);
但现在主要是我必须以表格形式显示它们,我必须在其中显示与分配给它的角色名称相关联的用户名称。
比如,用户是 tom,角色是管理员。 如何通过名称以表格形式准确显示它们? 有什么帮助吗?如何解决?
我应该调用role_user表并在foreach下调用user还是使用pivot方法来做到这一点?
【问题讨论】:
【参考方案1】:因此,在您想要列出用户角色的部分,您可以在刀片中执行类似的操作。
@foreach($users as $user)
<tr>
<td>$user->name</td>
<td>
@foreach($user->roles as $role)
$role->name
@endforeach
</td>
</tr>
@endforeach
如果您只需要可以使用的时间戳
$this->belongsToMany(role::class,'role_user','role_id','user_id')
->using(RoleUser::class)->withTimestamps();
或者创建一个模型直接与 role_user 表交互。
【讨论】:
谢谢兄弟,但我必须用 role_user 表来做这件事,正如我上面所说的,并且从图片中给出了角色 ID 和用户 ID 的保存位置 那么您需要时间戳吗?您总是可以创建一个使用该表的模型来简化此操作? 嘿...你能帮我解决这个问题吗:***.com/q/68373453/16445004 一周以来一直在努力解决这个问题以上是关于如何在 laravel 8 的 pivot_table 中调用其 id 作为 foreign_id 传递的主表中的列?的主要内容,如果未能解决你的问题,请参考以下文章