2016-11-21 38 views
2

使用Laravel 5.1。我有下面這個查詢。它在phpMyAdmin中工作正常。如果我對$category$value進行硬編碼,它也會起作用。但是沒有任何數量的連接和/或轉義變量讓查詢在我的控制器中運行。我正在使用use Illuminate\Support\Facades\DB;我試圖用單引號和雙引號封裝查詢,無效。我使用PHPStorm,它甚至說這個查詢是正確的,但事實並非如此。我究竟做錯了什麼 ??如何將PHP變量傳遞到Laravel DB ::準備查詢

public function addNode(Request $request) 
{ 

$category = $request->input('parent_category'); 
$value = $request->input('new_category'); 


$result = DB::unprepared(" 
LOCK TABLE nested_categories WRITE; 
SELECT @myLeft := lft FROM nested_categories 
WHERE name = '.\'$category\'.'; 
UPDATE nested_categories SET rgt = rgt + 2 WHERE rgt > @myLeft; 
UPDATE nested_categories SET lft = lft + 2 WHERE lft > @myLeft; 
INSERT INTO nested_categories(name, lft, rgt) VALUES('.\'$value\'.', @myLeft + 1, @myLeft + 2); 
UNLOCK TABLES;"); 

return redirect('nested_categories'); 
} 

TKS !!

回答

0

簡單,當你知道如何。忘記連接或反斜線。只需使用這個:

$category = $request->input('parent_category'); 
$value = $request->input('new_category'); 

$result = DB::unprepared(" 
LOCK TABLE nested_categories WRITE; 
SELECT @myLeft := lft FROM nested_categories 
WHERE name = '$category'; 
UPDATE nested_categories SET rgt = rgt + 2 WHERE rgt > @myLeft; 
UPDATE nested_categories SET lft = lft + 2 WHERE lft > @myLeft; 
INSERT INTO nested_categories(name, lft, rgt) VALUES('$value', @myLeft + 1, @myLeft + 2); 
UNLOCK TABLES;");