【问题标题】:Laravel wherePivot with sync method not workingLaravel wherePivot 与同步方法不起作用
【发布时间】:2020-10-17 21:58:32
【问题描述】:

我正在尝试同步数据但出现错误。

SQLSTATE[HY000]:一般错误:1364 字段“model_type”没有默认值(SQL:插入model_has_rolesdealerdealership_idmodel_idrole_id)值( 1, 61, 85, 13))

//控制器代码

$user = User::findOrFail($id);
        $user->first_name = $request->get('first_name');
        $user->last_name = $request->get('last_name');
        $user->phone = $request->get('phone_no');
        $user->title = $request->get('title');
        $user->mobile = $request->get('mobile');
        $user->save();

        $user->dealerRoles()->wherePivot('dealership_id', session('dealership_id'))->sync([$request->get('role_id') => ['dealer' => true, 'dealership_id' => session('dealership_id')]]);

// 用户模型

public function dealerRoles()
{
    return $this->belongsToMany(Role::class, 'model_has_roles', 'model_id', 'role_id');
}

【问题讨论】:

  • 在您的表中model_has_roles 列中model_type 是必需的。您还必须为此列设置值。
  • @RafałMigda 如何设置该值?
  • 需要添加同步方法 $user->dealerRoles()->wherePivot('dealership_id', session('dealership_id'))->sync([$request->get('role_id ') => [ 'model_type' => 1, 'dealer' => true, 'dealership_id' => session('dealership_id')]]);
  • 好的,非常感谢你现在工作
  • @RafałMigda 请您将此添加为答案吗?我可能会帮助其他人解决这个问题。

标签: laravel many-to-many laravel-5.5


【解决方案1】:

你需要添加同步方法

$user->dealerRoles()
              ->wherePivot('dealership_id', session('dealership_id'))
                  ->sync([
                       $request->get('role_id') => [ 
                            'model_type' => 1, 
                            'dealer' => true, 
                            'dealership_id' => session('dealership_id')
                   ]
        ]);    

【讨论】:

    猜你喜欢
    • 2011-03-30
    • 2022-01-13
    • 1970-01-01
    • 1970-01-01
    • 2012-03-04
    • 1970-01-01
    • 1970-01-01
    • 2018-07-09
    • 1970-01-01
    相关资源
    最近更新 更多