Laravel Eloquent Replikasi Model boleh mencipta rekod baharu menggunakan semua atau sebahagian daripada data model. Ia digunakan untuk membuat separuh salinan tanpa memasukkan semula data sebelumnya.
Ini boleh dilakukan menggunakan kaedah replicate()
Laravel. Di bawah ialah beberapa contoh:
1. Meniru model menggunakan kaedah replicate()
replicate()
mencipta salinan model, tetapi meninggalkan id
dan timestamps
model (melainkan anda menyimpannya). Anda juga boleh meniru medan tertentu.
<code class="language-php">use App\Models\Post; $post = Post::find(1); // মূল পোস্ট খুঁজে বের করা // পোস্ট রিপ্লিকেট করা $newPost = $post->replicate(); // অতিরিক্ত ক্ষেত্রের মান পরিবর্তন $newPost->title = 'নতুন পোস্ট'; $newPost->status = 'ড্রাফট'; // নতুন পোস্ট সংরক্ষণ $newPost->save();</code>
Bagaimana ia berfungsi?
replicate()
mencipta model baharu dengan menyalin data daripada model asal.title
, status
dsb.save()
.2. Meniru
tidak termasuk beberapa medan Kaedahreplicate()
boleh direplikasi dengan meninggalkan medan tertentu menggunakan .except()
atau .makeHidden()
.
<code class="language-php">use App\Models\Post; $post = Post::find(1); // `created_at` এবং `updated_at` ক্ষেত্র বাদ দিয়ে রিপ্লিকেট করা $newPost = $post->replicate()->makeHidden(['created_at', 'updated_at']); $newPost->save();</code>
Dengan cara ini data lain boleh disalin kecuali created_at
dan updated_at
.
3. Meniru model hubungan
Jika model berkaitan dengan model lain (Satu-ke-Banyak, Banyak-ke-Banyak), maka model yang berkaitan itu juga boleh disalin. Contohnya, jika siaran mempunyai banyak ulasan:
<code class="language-php">use App\Models\Post; $post = Post::find(1); // মূল পোস্ট খুঁজে বের করা // পোস্ট রিপ্লিকেট করা $newPost = $post->replicate(); // অতিরিক্ত ক্ষেত্রের মান পরিবর্তন $newPost->title = 'নতুন পোস্ট'; $newPost->status = 'ড্রাফট'; // নতুন পোস্ট সংরক্ষণ $newPost->save();</code>
Ini akan menambahkan semua ulasan pada siaran asal pada siaran baharu.
4. Replikasi Lata (Replikasi Lata)
Gunakan replikasi lata untuk meniru model berkaitan secara automatik.
<code class="language-php">use App\Models\Post; $post = Post::find(1); // `created_at` এবং `updated_at` ক্ষেত্র বাদ দিয়ে রিপ্লিকেট করা $newPost = $post->replicate()->makeHidden(['created_at', 'updated_at']); $newPost->save();</code>
5. Meniru
tidak termasuk medan yang ditentukan Untuk menyalin medan selain daripada medanid
:
<code class="language-php">use App\Models\Post; $post = Post::find(1); // পোস্ট রিপ্লিকেট করা $newPost = $post->replicate(); // সম্পর্কিত মন্তব্য কপি করা $newPost->comments = $post->comments; $newPost->save();</code>
6. replicate()
dan Pengesahan
replicate()
Menggunakan peraturan pengesahan model asal pada model baharu.
Contoh ini menunjukkan pelbagai kegunaan kaedah replicate()
. Ini boleh diubah suai mengikut keperluan anda.
Atas ialah kandungan terperinci Laravel Eloquent ORM dalam Model Mereplikasi Bahagian Bangla). Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!