Laravel ORM を使用した Insert...Select ステートメントの作成
別のテーブルから新しいテーブルへのレコードの挿入は、Insert を使用して実行できます。 ..ステートメントを選択します。 Laravel では、Eloquent ORM または生の SQL クエリを利用してこのタスクを実行できます。
Laravel Eloquent の列バインディング
Laravel の Eloquent ORM を使用すると、次の利点を活用できます。 getBindings() メソッドを使用して、以前に構築された Select クエリのバインディング パラメーターを取得します。これにより、すでに準備されたステートメントを再利用できます。
<code class="php"><?php // Create the Select query $select = User::where(...) ->where(...) ->whereIn(...) ->select(['email', 'moneyOwing']); // Get the binding parameters $bindings = $select->getBindings(); // Construct the Insert query $insertQuery = 'INSERT INTO user_debt_collection (email, dinero) ' . $select->toSql(); // Execute the Insert query using the bound parameters DB::insert($insertQuery, $bindings);</code>
生の SQL クエリの使用
代わりに、生の SQL クエリを使用して Insert...Select を作成することもできます。
<code class="php"><?php $insertQuery = '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; DB::insert($insertQuery);
Laravel 5.7 以降
Laravel 5.7 以降では、insertUsing() メソッドを利用してプロセスを簡素化できます。
<code class="php"><?php DB::table('user_debt_collection')->insertUsing(['email', 'dinero'], $select);</code>
以上がLaravel ORMでInsert...Selectステートメントを作成する方法?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。