我应该在Laravel 9中使用吗?
DB::table('galleries')->insert(
['book_id' => $book->id, 'photo' => $name, 'cover' => 1],
);还是拉勒维尔的口才?
Gallery::create(
['book_id' => $book->id, 'photo' => $name, 'cover' => 1],
);那有什么区别呢?
发布于 2022-09-17 16:21:44
两者基本上是一样的。当您想要插入大量数据时,唯一的区别是。
当处理大量数据时,查询生成器的性能要比雄辩的ORM快得多。
发布于 2022-09-17 17:09:45
insert()查询生成器方法差异:
insert()在幕后运行mysql原始插入查询,与mysql raw查询一样,您可以在单个查询中创建多个行。 DB::table('galleries')->insert(
['book_id' => $book->id, 'photo' => <photo A path>, 'cover' => 1],
['book_id' => $book->id, 'photo' => <photo B path>, 'cover' => 0],
);上面的查询将在单个查询中插入两行。
create()方法。model events,即creating、created事件等。create()雄辩的方法差异:
create()中运行foreach loop方法,或者需要使用createMany()方法。它们都像
create()一样工作。假设您想在数据库表中插入100行,那么这两行都将在幕后运行100 insert查询。
creating、created事件等。insert()查询生成器方法要慢,因为它在插入过程中处理大量的计算、事件管道。建议:
如果要捕获模型事件,则必须使用eloquent()。如果您想要查询优化,快速插入,并且不关心model events,那么用户insert()方法。
https://stackoverflow.com/questions/73756131
复制相似问题