私はどちらをいつ使うべきか、そして両方を使うべきかどうかを考えていました。
Laravel docsを見て、両方にそこにあります。私がそれからできることから、DB::insert()
はDB::table()->insert()
よりも「調整された」クエリを提供します。
誰がどのようにいつ使用するかに関して、2つの違いが正確に何であるかを誰かが明確にできるでしょうか?
DB::insert()
raw sql query の場合。例:
DB::insert('insert into users (id, name) values (?, ?)', [1, 'Dayle']);
DB::table()->insert()
for query builder 。例:
DB::table('users')->insert( ['email' => '[email protected]', 'votes' => 0] );
クエリビルダーは条件を生のSQLクエリにコンパイルしますが、はるかに便利なので、それを使用しています
常にクエリビルダーをできるだけ使用しようとすると、SQLインジェクションが妨げられます。
LaravelクエリビルダーはPDOパラメータバインディングを使用して、アプリケーションをSQLインジェクション攻撃から保護します。バインディングとして渡される文字列をクリーンアップする必要はありません
クエリビルダーは、値内の「、」などの特殊文字も使用できます。生のステートメントの場合は、特殊文字を自分で処理する必要があります。