在phpmyadmin中工作的Laravel中存在MySQL访问冲突

在phpmyadmin中工作的Laravel中存在MySQL访问冲突,php,mysql,laravel,Php,Mysql,Laravel,我刚刚开始使用Laravel框架,并找到了一个很好的分层数据小指南(通过这个网站),我已经做得很好了 我遇到的唯一问题是通过Laravel运行以下代码: DB::query("LOCK TABLE pages WRITE; SELECT @myLeft := lft FROM pages WHERE id = ?; UPDATE pages SET rgt = rgt + 2 WHERE rgt > @myLeft; UPDATE pages

我刚刚开始使用Laravel框架,并找到了一个很好的分层数据小指南(通过这个网站),我已经做得很好了

我遇到的唯一问题是通过Laravel运行以下代码:

DB::query("LOCK TABLE pages WRITE;
        SELECT @myLeft := lft FROM pages WHERE id = ?;
        UPDATE pages SET rgt = rgt + 2 WHERE rgt > @myLeft;
        UPDATE pages SET lft = lft + 2 WHERE lft > @myLeft;
        UNLOCK TABLES;", 1);
当我通过phpmyadmin运行命令时,工作正常,但在Laravel中,我得到一个错误:

SQLSTATE[42000]: Syntax error or access violation: 1064 You have an error in your SQL syntax;

我还有很多其他查询运行正常,所以我不知道从哪里开始查找,我已经尝试向表名和字段名中添加`并移除锁,看看这是否会起到任何作用,但没有任何改变。

好的,我想Lavarel只想运行一个查询,而我正在尝试运行五个,当我按照下面的方式拆分命令时,它会起作用,

$ord = DB::first("SELECT lft FROM pages WHERE id = ?;", $order);            
        DB::query("UPDATE pages SET rgt = rgt + 2 WHERE rgt > ?;", $ord->lft);
        DB::query("UPDATE pages SET lft = lft + 2 WHERE lft > ?;", $ord->lft);

每个
DB::query()
只执行一个查询。在不查看源代码的情况下,此方法设计为只运行一条语句