Как показать SQL-запрос, сформированный :: create Laravel? - PullRequest
0 голосов
/ 09 марта 2019

Можно ли отобразить готовый SQL после операции:

 $r = \App\Visitor::create($item);

Где $item - данные массива.

Интересно, почему эта операция возвращается в $r вставленной модели, но в таблице БД изменений нет.

Итак, спасибо за ответы, я попробовал ваши решения:

Это запрос:

insert into `visitors` (`lastname`, `firstname`, `middlename`, `birthday`, `company`, `document_number`, `pincode`, `code`, `idEvent`) values ("Huse", "Huseynkhanov", "Akif", "1981-04-09", "XXX", 16428285, "QT0FE12", 19283746564923, "17");

Это экран привязки:

enter image description here

Если выполнить запрос выше в базе данных, он работает. Но Laravel не вставляет данные.

Модель:

class Visitor extends Model
{
    public $timestamps = false;

    public $table = 'visitors';

    protected $fillable = [
        "lastname",
        "firstname",
        "middlename",
        "birthday",
        "company",
        "document_number",
        "pincode",
        "status",
        "code",
        "idEvent"
    ];

    protected $primaryKey = 'idVisitor';

    protected static function boot()
    {
        parent::boot();

        static::addGlobalScope(new StatusScope);
    }
}

Код:

foreach ($items as $item) {
    \App\Visitor::create($item);
}

Ответы [ 2 ]

2 голосов
/ 09 марта 2019

Полагаю, вы можете сделать что-то вроде этого:

$r = \App\Visitor::create($item)->toSql();
dd($r);
1 голос
/ 09 марта 2019

Вы можете использовать это

DB::enableQueryLog();
\App\Visitor::create(['key' => 'value', ....]);
$data = DB::getQueryLog();
$query = str_replace(array_fill(0, count($data[0]['bindings']), '?'), $data[0]['bindings'],  $data[0]['query']);
dd($query);
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...