Dalam kit pangkalan data Laravel, Eloquent menyediakan kaedah mudah untuk mengendalikan kedua-dua sisipan rekod dan kemas kini secara serentak. Kaedah ini menjimatkan kerumitan menulis kod eksplisit untuk operasi ini.
Bayangkan senario di mana anda perlu menentukan sama ada untuk memasukkan rekod baharu atau mengemas kini yang sedia ada berdasarkan kewujudan keadaan tertentu. Secara tradisinya, ini memerlukan semakan berasingan untuk kewujudan rekod dan penyisipan atau pertanyaan kemas kini seterusnya.
Laravel's Eloquent memperkenalkan pendekatan ringkas untuk tugas ini: firstOrNew(). Seperti yang ditunjukkan dalam coretan PHP yang disediakan:
<code class="php">$shopOwner = ShopMeta::where('shopId', '=', $theID) ->where('metadataKey', '=', 2001)->first();</code>
Kod ini menyemak sama ada rekod wujud dalam jadual ShopMeta dengan shopId dan metadataKey yang ditentukan. Jika tiada rekod sedemikian ditemui, ia akan mengembalikan batal.
Untuk meneruskan proses sisipan/kemas kini:
<code class="php">if ($shopOwner == null) { // Insert new record into database } else { // Update the existing record }</code>
Jika $shopOwner adalah memang batal, rekod baru boleh dimasukkan. Jika tidak, rekod sedia ada boleh dikemas kini.
Penyelesaian yang lebih baik, seperti yang dicadangkan oleh "lu cip", ialah menggunakan kaedah firstOrNew() , yang menghapuskan keperluan untuk semakan bersyarat:
<code class="php">$user = User::firstOrNew(array('name' => Input::get('name'))); $user->foo = Input::get('foo'); $user->save();</code>
Dengan pendekatan yang dikemas kini ini, jika rekod dengan nama yang dinyatakan wujud, ia diambil semula; jika tidak, rekod baru dicipta. Operasi seterusnya (cth., menetapkan foo) dan menyimpan rekod diperkemas di bawah satu panggilan save().
Atas ialah kandungan terperinci Bagaimana untuk Memadatkan Operasi Pangkalan Data dengan Kaedah Laravel Eloquent's firstOrNew()?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!