我一直想弄清楚哪一个使用的时候,如果我应该同时使用它们。
一直在看Laravel文档,他们都在那里。从我可以做到的,DB::insert()
提供了比DB::table()->insert()
更多的“量身定制”查询。
当涉及到如何以及何时使用时,是否有人能够澄清两者之间的区别究竟是什么?
答案 0 :(得分:16)
DB::insert()
代表raw sql queries。例如:
DB::insert('insert into users (id, name) values (?, ?)', [1, 'Dayle']);
DB::table()->insert()
代表query builder。例如:
DB::table('users')->insert(
['email' => 'john@example.com', 'votes' => 0]
);
查询构建器将条件编译为原始sql查询,但我使用它是因为它更方便
答案 1 :(得分:0)
您总是尝试尽可能多地使用查询生成器,这样可以防止SQL注入。
Laravel查询构建器使用PDO参数绑定来保护您的应用程序免受SQL注入攻击。无需清理作为绑定传递的字符串
查询生成器还可以帮助在值中使用特殊字符,例如','。对于原始语句,您需要自己处理特殊字符。