Laravel Eloquent 的 複製模型 可以使用模型的全部或部分資料建立新記錄。 用於製作半複製,無需重新插入先前的資料。
這可以使用 Laravel 的 replicate()
方法來完成。 以下是一些例子:
1。使用 replicate()
方法
replicate()
方法建立模型的副本,但忽略模型的 id
和 timestamps
(除非儲存它們)。 您也可以複製特定字段。
<code class="language-php">use App\Models\Post; $post = Post::find(1); // মূল পোস্ট খুঁজে বের করা // পোস্ট রিপ্লিকেট করা $newPost = $post->replicate(); // অতিরিক্ত ক্ষেত্রের মান পরিবর্তন $newPost->title = 'নতুন পোস্ট'; $newPost->status = 'ড্রাফট'; // নতুন পোস্ট সংরক্ষণ $newPost->save();</code>
它是如何運作的?
replicate()
方法透過複製原始模型中的資料來建立新模型。 title
、status
等save()
方法將新副本儲存到資料庫。 2。複製
排除某些字段 可以透過使用 或 replicate()
..except()
省略特定欄位來複製 .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>
這樣可以複製created_at
和updated_at
以外的其他資料。
3。複製關係模型
如果一個模型與另一個模型相關(一對多、多對多),那麼這些相關模型也可以被複製。 例如,如果某篇貼文有很多留言:
<code class="language-php">use App\Models\Post; $post = Post::find(1); // মূল পোস্ট খুঁজে বের করা // পোস্ট রিপ্লিকেট করা $newPost = $post->replicate(); // অতিরিক্ত ক্ষেত্রের মান পরিবর্তন $newPost->title = 'নতুন পোস্ট'; $newPost->status = 'ড্রাফট'; // নতুন পোস্ট সংরক্ষণ $newPost->save();</code>
這會將原始帖子的所有評論添加到新帖子中。
4。級聯複製(Cascade Replication)
使用級聯複製來自動複製相關模型。
<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。複製
排除指定字段 要複製id
欄位以外的欄位:
<code class="language-php">use App\Models\Post; $post = Post::find(1); // পোস্ট রিপ্লিকেট করা $newPost = $post->replicate(); // সম্পর্কিত মন্তব্য কপি করা $newPost->comments = $post->comments; $newPost->save();</code>
6。 replicate()
和驗證
replicate()
將原始模型的驗證規則應用於新模型。
這些範例展示了 replicate()
方法的各種用法。 這些可以根據您的需求進行修改。
以上是Bangla 部分複製模型中的 Laravel Eloquent ORM)的詳細內容。更多資訊請關注PHP中文網其他相關文章!