Is there anyway I can execute a query with multiple statement like the one below, using laravel framework.
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.
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;
Advertisement
Answer
DB::unprepared()
should do the trick , laravel prepare and do some stuff for sql queries .
But instead you can use absolutely raw ones using 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 .