updateOrCreate用于多态关系?

时间:2018-02-06 14:57:35

标签: php laravel laravel-5 laravel-5.4

有没有办法使用updateOrCreate()或类似方法进行多态关系?

使用updateOrCreate方法的问题我不会知道多态表中的id

目前这样做:

if ($request->has('meta.description')) {
    $description = $cat->tags()->where('key', 'description')->first();

    if (is_null($description)) {
        $cat->tags()->create([
            'client_id' => client()->id,
            'key'       => 'description',
            'value'     => $request->input('meta.description'),
        ]);
    } else {
        $description->update([
            'value' => $request->input('meta.description'),
        ]);
    }

}

像这样的猫模型标记方法:

public function tags()
{
    return $this->morphMany('App\Tag', 'taggable', 'table_name', 'table_id');
}

1 个答案:

答案 0 :(得分:0)

您需要将第二个参数传递给updateOrCreate。尝试将数组拆分为两个,如下所示:

$cat->tags()->updateOrCreate(
    [
        'client_id' => client()->id,
        'key'       => 'description'
    ],
    [
        'value'     => $request->input('meta.description')
    ]
);