Как получить запрос на сохранение в Laravel? - PullRequest
0 голосов
/ 13 апреля 2020

Как выполнить sql при сохранении некоторых данных? Например,

 $user = New User;
 $user->name = "test";
 $user->mail = "test@example.com";
 $user->save();

Я не хочу выполнять запрос. Я просто хочу получить строку запроса. (Что-то вроде «INSERT INTO users .....»)

Я пробовал $user->toSql();. Но это дает «выбрать * из пользователей», что неправильно.

1 Ответ

3 голосов
/ 13 апреля 2020

toSql(); для построителя запросов модели. вот почему, когда вы делаете $user->toSql();, вы выбираете все операторы.

здесь вы можете сделать две вещи

один, использовать DB::listen

    DB::listen(function ($query) {
        echo $query->sql;
    });
 $user = New User;
 $user->name = "test";
 $user->mail = "test@example.com";
 $user->save();

два, QueryLog, если вам нужна дополнительная информация.

DB::enableQueryLog();
 $user = New User;
 $user->name = "test";
 $user->mail = "test@example.com";
 $user->save();
dd(DB::getQueryLog());

, если вы не хотите выполнять запрос, просто оберните его с DB::pretend, как при переносе, добавляя --pretend, чтобы вы не мигрировали DB вы получите все сценарии sql.


    DB::pretend(function () {
         $user = New User;
         $user->name = "test";
         $user->mail = "test@example.com";
         $user->save();
    });
...