[Laravel] 5.7.17がリリースされました

laravel/frameworkのバージョン5.7.17がリリースされました。追加された機能について確認します。

Database\Query\Builder::insertUsingメソッドが追加されました

データベースの内容をメモリに展開することなく、サブクエリから直接挿入できます。

$builder->from('table1')->insertUsing(
    ['foo'],
    function (Builder $query) {
        $query->select(['bar'])->from('table2')->where('foreign_id', '=', 5);
    }
);

// insert into "table1" ("foo") select "bar" from "table2" where "foreign_id" = 5

Database\Query\Builder::havingBetweenメソッドが追加されました

SQLのHAVINGBETWEENの条件が指定できます。

$builder->select('*')->from('users')->havingBetween('last_login_date', ['2018-11-16', '2018-12-16'])->orHavingRaw('user_foo < user_bar');

// select * from "users" having "last_login_date" between '2018-11-16' and  '2018-12-16' or user_foo < user_bar

DetectsLostConnectionsトレイトにエラー処理が追加されました

MariaDBへの接続が失われた場合のメッセージが追加されました。

Postgresの外部キーを追加する場合の検証をスキップするためのオプションが追加されました

PostgresSQLのテーブルに外部キーを追加するには、既存のデータを検証するときにテーブルに排他アクセスロックが必要です。

notValid()メソッドを利用することで検証をスキップできます。

$blueprint->foreign('parent_id')->references('id')->on('parents')->onDelete('cascade')->deferrable()->notValid();

詳しい変更については以下を確認してください。

Release v5.7.17 · laravel/framework · GitHub

© Xzxzyzyz