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中文网其他相关文章!