Как выполнить необработанный SQL-запрос с множественным оператором с помощью laravel - PullRequest
0 голосов
/ 20 мая 2018

Есть ли в любом случае, я могу выполнить запрос с несколькими утверждениями, как показано ниже, используя каркас laravel.Я пытался использовать DB::statement, но вернул ошибку синтаксиса sql, но когда я выполняю тот же запрос на phpmyadmin, я работаю, это очень расстраивает.Пожалуйста, помогите мне.

EG

LOCK TABLE topics WRITE;

SELECT @pRgt := rgt FROM topics WHERE id = ?;

UPDATE topics SET lft = lft + 2 WHERE rgt > @pRgt;
UPDATE topics SET rgt = rgt + 2 WHERE rgt >= @pRgt;

INSERT INTO topics (title, overview, article, image, lft, rgt)
VALUES (?, ?, ?, ?, @pRgt, @pRgt + 1);

UNLOCK TABLES;

1 Ответ

0 голосов
/ 21 мая 2018

Да, существует способ, чтобы сделать это, используя метод DB :: unprepared (), подготовить laravel и сделать некоторые вещи для SQL-запросов.Но вместо этого вы можете использовать абсолютно необработанные, используя DB :: unprepared в своем коде, вы можете использовать его следующим образом:

DB::unprepared('LOCK TABLE topics WRITE;

SELECT @pRgt := rgt FROM topics WHERE id = ?;

UPDATE topics SET lft = lft + 2 WHERE rgt > @pRgt;
UPDATE topics SET rgt = rgt + 2 WHERE rgt >= @pRgt;

INSERT INTO topics (title, overview, article, image, lft, rgt)
VALUES (?, ?, ?, ?, @pRgt, @pRgt + 1);

UNLOCK TABLES;');

Он выполнит весь ваш SQL-запрос, будь то одиночные / множественные операторы.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...