2

我刚刚开始使用 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;

我有许多其他查询运行良好,所以我不知道从哪里开始寻找,我已经尝试将 ` 添加到表和字段名称中,并删除了锁以查看是否会做任何事情但没有任何改变。

4

2 回答 2

1

好的,我在想 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);
于 2012-12-19T20:15:37.233 回答
0

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

于 2012-12-20T10:18:39.653 回答