我在我的role_user
透视表中有一个额外的用户名列,如何将用户名与角色同步?
role\u用户
pivot表
我需要在name
字段中同步用户名
这是更新功能,我在其中添加了sync
public function update(Request $request, User $user)
{
$role = $request->role;
$userName = Auth::user();
$user->roles()->sync([$role=>['name'=>$userName->name]]);
dd('stop');
}
这是我的User Model
中的关系
public function roles()
{
return $this->belongsToMany(Role::class)->withPivot(['name'])->withTimestamps();
}
下面是role_user
表迁移
class CreateRoleUserTable extends Migration
{
/**
* Run the migrations.
*
* @return void
*/
public function up()
{
Schema::create('role_user', function (Blueprint $table) {
$table->bigIncrements('id');
$table->unsignedBigInteger('role_id');
$table->unsignedBigInteger('user_id');
$table->string('name')->nullable();
$table->timestamps();
});
}
/**
* Reverse the migrations.
*
* @return void
*/
public function down()
{
Schema::dropIfExists('role_user');
}
}
这是我在转储请求并验证用户名时得到的结果
转储代码
$userName = Auth::user();
dump('Auth user name = '.$userName->name);
dump($request->all());
dd('stop');
好吧,你几乎做对了。除了...
你需要这样写它(使用集合mapBackKeys方法):
$roles = collect($request->role)->mapWithKeys(function($role){
return [$role => ['name' => Auth::user()->name];
})->toArray();
$user->roles()->sync($roles);
原因是您需要分别为每个角色指定透视表参数。因此,不是[[1,2]=
您需要一个由角色id键控的关联数组,每个元素都有一个数组,以便向透视表添加内容。目前,您只有一个角色ID数组,这对于sync
来说很好,但如果您还想设置额外的透视数据,就不需要了。您需要一个如下所示的数组:
[1 => ['name' => ...], 2 => ['name' => ...]]
您可以使用array\u fill\u keys
构建此数组,其中键是角色ID,值是带有“name”字段的数组:
$roles = (array) $request->input('role', []);
$forSync = array_fill_keys($roles, ['name' => $userName->name]);
我正在制作一个VueJS表单,用户可以在其中编辑一个步骤。一个步骤可以有许多父产品。逻辑是一个步骤可以属于多个产品。我有一个名为products、product_step(透视表)和steps的表。 当用户第一次加载页面时,该数组将填充此stap的父产品。 此阵列将根据用户决定在前端执行的操作进行更改。假设他们希望产品n不再具有此步骤的访问权限。在这种情况下,产品将从阵列中删除。 我面临的问题是,
事实上,我的问题很简单,但我找不到任何答案。 我使用的是Laravel Elotent,我有3张桌子: 一个数据透视表叫做: 我已经从我的公司对象中获得了,我正在尝试获取
我有下面的表格,我想检索每个喜欢评论的用户喜欢的评论的数量(类似于Instagram评论,任何人都可以喜欢其他用户的评论) 它用于保存评论链接,看起来像Instagram评论,任何用户都可以喜欢其他用户的评论。 这是我的用户模型代码: 以下是我的Ask模型代码: 这是我的用户模型代码: 这是我的评论模型代码: 我想用他们的评论检索最新的ask,包括评论的数量和数据** 我使用了这个代码,但它显示错
我正在建立一个音乐发现服务。我的问题是:如何将数据插入到三方数据透视表Tag_Track_User? 我在LaravelSD看到了这个模式 它包括六个主要表(和其他几个):艺术家,专辑,曲目,标签,用户和Tag_Track_User 艺术家们 标签、轨迹和用户都是相互关联的,因为没有第三个,任何两个都不可能存在。 艺术家有许多()专辑 专辑有许多歌曲,属于艺术家 曲目belongsTo()相册 跟
问题内容: 用户模型: 职位模型: 在表单提交时,我有两个数组: 使用 可以按预期将position_user表与用户和相应的位置ID同步。 但是我不知道如何填充多余的字段(“ company_id”) 这是我期望的工作方式: 我已经阅读了手册,但是我只是看不到如何处理这些数组,因为手册中的示例似乎与以下情况有关:要填充的额外字段不是多个项目的数组: 我尝试使用此答案 合并两个数组: 并获得$ s
我有一个用户表和一个帐户表。 此帐户表定义用户可以拥有的帐户。 例如 账户: 用户: 我现在有另一个表:users\u accounts 我正在为新用户创建一个界面。在这个页面上,我有基本的细节,但也有一个复选框列表(从accounts表创建)。复选框表示用户需要为其设置的帐户。 我要做的是创建帐户时: 我还想将用户ID和他们需要设置的帐户添加到users_accounts表中。单个用户可能需要多