简体   繁体   English

如何使用 Laravel 执行带有多个语句的原始 sql 查询

[英]How to execute a raw sql query with multiple statement with laravel

Is there anyway I can execute a query with multiple statement like the one below, using laravel framework.无论如何,我可以使用laravel框架使用如下所示的多个语句执行查询。 I have tried using DB::statement but returned a sql syntax error, but when I execute the same query on phpmyadmin I works, its so frustrating.我曾尝试使用DB::statement但返回了一个 sql 语法错误,但是当我在 phpmyadmin 上执行相同的查询时,我工作了,这太令人沮丧了。 Please help me.请帮我。

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;

DB::unprepared() should do the trick , laravel prepare and do some stuff for sql queries . DB::unprepared() unprepared DB::unprepared()应该可以解决问题,laravel 准备并为 sql 查询做一些事情。
But instead you can use absolutely raw ones using DB::unprepared .但是,您可以使用DB::unprepared使用绝对原始的。

EG例如

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;');

It will execute your whole SQL query whether it is single/multiple statements .无论是单个/多个语句,它都会执行您的整个 SQL 查询。

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM