Laravel updateOrCreate 与 hasMany 关系

Laravel updateOrCreate with hasMany relationship

我的用户可以有多个参数。例如,它们被称为 user_param_1、user_param_2、...、user_param_n。这是动态的。它是一个单独的tableuser_parameters,存储id,user_id,name和value。 UsersUserParameters 之间的关系是 belongsTo 和 hasMany。问题是:

编辑时,我想动态保留它,如果用户有 user_param_n+1,则应该创建它。但是我已经有问题来编写现有参数的条件。

我自己创建了一个 userParameters 数组,其中仅包含来自 $request 变量的必要参数。该数组如下所示:

[
  0 => [
    "name" => "par1"
    "value" => "var1"
  ]
  1 => [
    "name" => "par2"
    "value" => "var2"
  ]
  2 => [
    "name" => "par3"
    "value" => "var3"
  ]
]

那我要存起来。我的控制器知道用户,所以我可以访问 $user->id.

foreach ($userParameters as $userParameter) {
        $user->parameters()->updateOrCreate(['id' => $user->parameters->id, 'user_id' => $user->id], $userParameter);
}

问题是,$user->parameters 是 eloquent 个模型的数组。条件不对。我无法直接访问 id。但是我该如何解决呢?我需要类似“['id' => [IF-DATABASE-ID-EXISTS-IN-ARRAY-$user-parameters]”之类的东西...但是如何以 eloquent 方式?

提前致谢!

此致

我认为您需要使用 user_id 和 parameter_name 获取现有参数,因为这是该参数行的唯一性,如果没有具有此名称的参数,它将使用 user_id & parameter_name 和 parameter_value 传递给 updateOrCreate 函数

foreach ($parameters_from_request as $parameter) {
        $user->parameters()
                ->updateOrCreate(
                 [
                 'name' => $parameter['name'] ,
                 'user_id' => $user->id
                 ],[
                   'name' => $parameter['name'],
                   'value'=> $parameter['value']
                   ]);
}