sql >> データベース >  >> RDS >> Mysql

挿入を作成...Laravelでステートメントを選択

    1つのクエリでこれを行う方法はありません(Laravel 5.7を使用している場合を除く)が、同じ問題に遭遇し、QueryBuilderで構築した特定の選択を引き続き使用できることを確認したいと思いました。

    つまり、物事を半分にきれいに保ち、以前にselectステートメントを作成した機能を再利用するためにできることは次のとおりです。

    /**
     * Wherever your Select may come from
     **/
    $select = User::where(...)
                      ->where(...)
                      ->whereIn(...)
                      ->select(array('email','moneyOwing'));
    /**
     * get the binding parameters
     **/ 
    $bindings = $select->getBindings();
    /**
     * now go down to the "Network Layer"
     * and do a hard coded select
     */
     $insertQuery = 'INSERT into user_debt_collection (email,dinero) '
                    . $select->toSql();
        
     \DB::insert($insertQuery, $bindings);
    

    Laravel5.7を更新

    Laravel 5.7.17以降、-> insertUsing()を使用できます。 こちら をご覧ください。 詳細については。これを指摘してくれてありがとう@Soulriser。

    したがって、上記のクエリは次のようになります。

    DB::table('user_debt_collection')->insertUsing(['email','dinero'], $select);
    


    1. MySQLでN:Mの関係を持つテーブルを作成するにはどうすればよいですか?

    2. SQLServerで整数を10進数に変換する3つの方法

    3. PostgreSQLの行から列へ

    4. mySQL-テーブルロックと行ロック