拉拉维尔更新或创建变更数据取决于事件



我正在使用 laravel updateOrCreate 函数

$variable = Variable::updateOrCreate(
            ['name' => $name,
            'landing_id' => $landing_id,
            'version_id' => $version_id,
            'page_id' => $page_id],
            [
             'user_id' => Auth::user()->id
             'user_modified_id' => Auth::user()->id ]
        );

如何正确使用此函数,在创建记录时向user_id添加值,并在更新记录时更新user_modified_id更新。

Well i found work around for my issue but i don't know if this is best way to do. What i have to do is this: 
            if( $variable->user_id == 0){
                $variable->user_id = Auth::user()->id;
            }
            $variable->value = $setting;
            $variable->save();

使用以下代码来执行数据。第一个指示匹配的条件,第二个用于指定要更新的字段。

$variable = Variable::updateOrCreate([
    //Add unique field combo to match here
    //For example, perhaps you only want one entry per user:
    'user_id'   => Auth::user()->id,
],[
    'name'       => $name,
    'landing_id' => $landing_id,
    'version_id' => $version_id,
    'page_id'    => $page_id
]);

这样肯定更好。

$variable = Variable::updateOrCreate(
        ['name' => $name,
        'landing_id' => $landing_id,
        'version_id' => $version_id,
        'page_id' => $page_id],
        'user_id' => Auth::user()->id
        [
         'user_modified_id' => Auth::user()->id ]
    );

如果没有匹配项,第一个数组将创建一个新模型,第二个数组将更新指定的值(如果存在(。

您的问题是,如果没有匹配的记录,user_modified_id将与user_id一起创建。

最新更新