sql >> Databáze >  >> RDS >> Mysql

Vytvořit přílohu... Vyberte příkaz v Laravel

Neexistuje způsob, jak to udělat v jednom dotazu (pokud nepoužíváte Laravel 5.7), ale narazil jsem na stejný problém a chtěl jsem se ujistit, že mohu nadále používat určitý výběr, který sestavuji pomocí QueryBuilder.

Co byste tedy mohli udělat, abyste udrželi věci napůl čisté a znovu použili funkci, která již dříve vytvořila příkaz select, je toto:

/**
 * 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);

AKTUALIZOVAT Laravel 5.7

Od Laravelu 5.7.17 můžete použít ->insertUsing(). Viz zde pro detaily. Děkujeme @Soulriser za upozornění.

Výše uvedený dotaz by tedy vypadal takto:

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


  1. Hromadné vložení do SQL Server CE

  2. Jak omezit řádky v sadě výsledků MySQL

  3. Django nastavil Storage Engine &Default Charset

  4. Existuje omezení délky dotazu v mysql?