簡體   English   中英

Laravel的updateOrCreate函數

[英]Laravel's updateOrCreate function

我有這樣的表| user_id | code | created_at | updated_at | | user_id | code | created_at | updated_at |

我想創建一個方法,該方法為特定用戶創建一個新的代碼(如果不存在):

public function createCode(Request $request)
{
    $request->user()->confirmationCode()->updateOrCreate([
        'user_id' => $request->user()->id,
        'code' => bin2hex(random_bytes(3)),
    ]);
}

User模型:

public function confirmationCode()
    {
        return $this->hasOne(ConfirmationCode::class);
    }

但是createCode()總是為用戶創建一個新的代碼,即使該user_id代碼已經存在。 怎么了?

您的updateOrCreate語法不正確。 當前要更新,它必須與您的兩個輸入都匹配。 您需要以下內容:

public function createCode(Request $request)
{
    $request->user()->confirmationCode()->updateOrCreate(
        ['user_id' => $request->user()->id],
        ['code' => bin2hex(random_bytes(3))]
    );
}

該函數在第一個輸入數組上匹配,然后如果找到,則使用第二個數組中的值更新。 如果匹配失敗,它將使用兩個數組中的值創建一個新記錄。

https://laravel.com/docs/5.5/eloquent#other-creation-methods

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM