第七色在线视频,2021少妇久久久久久久久久,亚洲欧洲精品成人久久av18,亚洲国产精品特色大片观看完整版,孙宇晨将参加特朗普的晚宴

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

Laravel:避免數(shù)據(jù)庫中的重復條目

Laravel:避免數(shù)據(jù)庫中的重復條目

PHP
ibeautiful 2021-12-03 15:14:25
我正在構建一個 Laravel API。我有一個名為 Reservations 的模型。我想避免用戶為相同的產(chǎn)品和時間段創(chuàng)建兩個預訂。我有以下幾點:$reservation =  Reservation::firstOrCreate([   'listing_id'    =>  $request->listing_id,   'user_id_from'  =>  $request->user_id_from,   'start_date'    =>  $request->start_date,   'end_date'      =>  $request->end_date,]);return new ReservationResource($reservation);文檔說:firstOrCreate 方法將嘗試使用給定的列/值對定位數(shù)據(jù)庫記錄上面的代碼正在工作:如果項目尚不存在,它會將項目添加到數(shù)據(jù)庫中(在這種情況下,對 REST API 的回復返回正確的新模型實例。如果組合等于 ,則不會將該項目添加到數(shù)據(jù)庫中l(wèi)isting_id, user_id_from, start_date and end_date。但是,在后一種情況下(項目已經(jīng)存在),它也會在 REST API 中返回一個帶有匹配行 ID 的保留。示例:在下表中,已存在 ID 為 2 的預訂:id  listing_id  user_id_from    start_date  end_date------------------------------------------------------  1      2            3               2019-09-12  2019-10-14  發(fā)送以下 REST API 請求:{    "listing_id": 2,    "user_id_from": 3,    "start_date": "2019-09-12",    "end_date": "2019-10-14",}回報"data": {    "id": 1,    "user_id_from": 3,    "listing_id": 2,    "price": 388,    "start_date": "2019-09-12",    "end_date": "2019-10-14", }我想要一個 JSON 回復,說明該項目已經(jīng)存在。如何做到這一點?
查看完整描述

2 回答

?
陪伴而非守候

TA貢獻1757條經(jīng)驗 獲得超8個贊

firstOrCreate()正如您所期望的那樣,它只是一個由兩部分組成的函數(shù)first(),create()如果不存在則進行查找和回退。您可以在控制器中實現(xiàn)幾乎相同的邏輯,first()如果結果存在,則將消息附加到結果,并在創(chuàng)建時按原樣返回結果?;蛘?,您可以根據(jù)結果使用HTTP_OK或修改響應HTTP_CREATED。或兩者。


public function store(Request $request)

{

    $attributes = [

        'listing_id' => $request->input('listing_id'), 

        'user_id_from' => $request->input('user_id_from'), 

        'start_date' => $request->input('start_date'),

        'end_date' => $request->input('end_date')

    ];


    // return existing reservation if exists

    $reservation = Reservation::where($attributes)->first();


    if ($reservation !== null) {

        // add explicit message here if you want

        return response(json_encode($reservation), Response::HTTP_OK);

    }


    // else create a new one

    $reservation = Reservation::create($attributes);


    // reload model

    $reservation = Reservation::find($reservation->id);


    return response(json_encode($reservation), Response::HTTP_CREATED);

}


查看完整回答
反對 回復 2021-12-03
?
慕碼人2483693

TA貢獻1860條經(jīng)驗 獲得超9個贊

我認為您正在尋找 Laravel 的wasRecentlyCreated:


if(! $reservation->wasRecentlyCreated){ 

      // create & encode a JSON response  or use this variable & method on the blade page

}


查看完整回答
反對 回復 2021-12-03
  • 2 回答
  • 0 關注
  • 291 瀏覽

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯(lián)系客服咨詢優(yōu)惠詳情

幫助反饋 APP下載

慕課網(wǎng)APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網(wǎng)微信公眾號