2012-12-19 21 views
2

我剛開始使用Laravel Framework,並發現了一個很好的指導層次數據(通過本站),我工作得很好。Laravel中的MySQL訪問衝突,在phpmyadmin中起作用

我遇到的唯一問題是通過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; 

我有運行良好,許多其他的查詢,所以我不知道從哪裏開始尋找,我已經嘗試添加`表和字段名稱,並刪除了鎖,看看是否會做什麼,但沒有改變。

回答

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

DB::query()只做一個查詢。不用看源代碼,這種方法被設計爲只運行一個聲明。