我刚刚开始使用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()
只执行一个查询。在不查看源代码的情况下,此方法设计为只运行一条语句。