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

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

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

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

PHP
ibeautiful 2021-12-03 15:14:25
我正在構(gòu)建一個(gè) Laravel API。我有一個(gè)名為 Reservations 的模型。我想避免用戶為相同的產(chǎn)品和時(shí)間段創(chuàng)建兩個(gè)預(yù)訂。我有以下幾點(diǎn):$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ù)庫記錄上面的代碼正在工作:如果項(xiàng)目尚不存在,它會將項(xiàng)目添加到數(shù)據(jù)庫中(在這種情況下,對 REST API 的回復(fù)返回正確的新模型實(shí)例。如果組合等于 ,則不會將該項(xiàng)目添加到數(shù)據(jù)庫中l(wèi)isting_id, user_id_from, start_date and end_date。但是,在后一種情況下(項(xiàng)目已經(jīng)存在),它也會在 REST API 中返回一個(gè)帶有匹配行 ID 的保留。示例:在下表中,已存在 ID 為 2 的預(yù)訂: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",}回報(bào)"data": {    "id": 1,    "user_id_from": 3,    "listing_id": 2,    "price": 388,    "start_date": "2019-09-12",    "end_date": "2019-10-14", }我想要一個(gè) JSON 回復(fù),說明該項(xiàng)目已經(jīng)存在。如何做到這一點(diǎn)?
查看完整描述

2 回答

?
陪伴而非守候

TA貢獻(xiàn)1757條經(jīng)驗(yàn) 獲得超8個(gè)贊

firstOrCreate()正如您所期望的那樣,它只是一個(gè)由兩部分組成的函數(shù)first(),create()如果不存在則進(jìn)行查找和回退。您可以在控制器中實(shí)現(xiàn)幾乎相同的邏輯,first()如果結(jié)果存在,則將消息附加到結(jié)果,并在創(chuàng)建時(shí)按原樣返回結(jié)果?;蛘撸梢愿鶕?jù)結(jié)果使用HTTP_OK或修改響應(yīng)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);

}


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

TA貢獻(xiàn)1860條經(jīng)驗(yàn) 獲得超9個(gè)贊

我認(rèn)為您正在尋找 Laravel 的wasRecentlyCreated:


if(! $reservation->wasRecentlyCreated){ 

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

}


查看完整回答
反對 回復(fù) 2021-12-03
  • 2 回答
  • 0 關(guān)注
  • 281 瀏覽

添加回答

舉報(bào)

0/150
提交
取消
微信客服

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

幫助反饋 APP下載

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

公眾號

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