ホームページ  >  記事  >  データベース  >  Laravel で Insert...Select ステートメントを作成する方法: Eloquent および Query Builder ソリューション?

Laravel で Insert...Select ステートメントを作成する方法: Eloquent および Query Builder ソリューション?

Susan Sarandon
Susan Sarandonオリジナル
2024-11-01 02:20:28325ブラウズ

How to Create Insert...Select Statements with Laravel: Eloquent and Query Builder Solutions?

Laravel で挿入... ステートメントを選択する

Q: 挿入... を作成するにはどうすればよいですか? LaravelのEloquent ORMまたはクエリを使用したSelectステートメント?次の SQL 構文を変換するのに苦労しています:

<code class="sql">Insert into Demand (Login, Name, ApptTime, Phone, Physician, Location, FormatName, FormatDate, FormatTime, ApptDate, FormatPhone, cellphone)
Select Login, Name, ApptTime, Phone, Physician, Location, FormatName, FormatDate, FormatTime, ApptDate, FormatPhone, cellphone from " . [dbname] . "
    Where " . $where_statement</code>

A: ほとんどのバージョンの Laravel には直接的な 1 クエリのアプローチはありませんが、代わりの方法があります。同様の結果が得られます:

方法 1: 生の SQL とバインド パラメーターを使用する

<code class="php">$select = User::where(...)->where(...)->select(['email', 'moneyOwing']);
$bindings = $select->getBindings();

$insertQuery = 'INSERT into user_debt_collection (email, dinero) ' . $select->toSql();

DB::insert($insertQuery, $bindings);</code>

方法 2: insertUsing() を使用する (Laravel) 5.7 以降)

<code class="php">DB::table('user_debt_collection')->insertUsing(['email', 'dinero'], $select);</code>

注: これらのメソッドを使用すると、既存の SELECT ステートメントのバインドを再利用し、INSERT ステートメントを個別に実行できます。

以上がLaravel で Insert...Select ステートメントを作成する方法: Eloquent および Query Builder ソリューション?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。