2017-01-19 82 views
0

我試圖從CategoriesController.php到達items表,但我在Laravel(5.3)Debugbar中看到,我的查詢沒有執行。爲什麼?這裏是我的代碼:爲什麼我的where查詢不在控制器中執行?

# Http/Controllers/CategoriesController.php 

use App\Category; 
use App\Item; 
use App\Http\Requests; 
use App\Http\Controllers\Controller; 

namespace App\Http\Controllers; 

use Request; 

class CategoriesController extends Controller { 

    public function show($id) { 

    $items = \App\Item::where('id', $id); # <- This is not executed! 

    $category = \App\Category::find($id); 

    return view('categories.show', compact('category', 'items')); 

    } 

} 

回答

5

::where()被鏈接關閉查詢生成器的,但是你永遠不執行請求。

::where('id', $id)->first(); //if you only want the first result 
//shorthand would be ::find($id); 

或者,如果你想每一場比賽:

::where('id', $id)->get(); 
+0

謝謝,它確實有效。對不起 - 我是Laravel新手...我必須等待9分鐘才能接受答案 – Gediminas

+1

我從Ruby on Rails來到Laravel,there()函數在沒有附加命令的情況下執行,這就是爲什麼這會誤導我。謝啦兄弟! – Gediminas

1
$items = \App\Item::where('id', $id); 

該行正準備洋洋灑灑執行查詢,但你從來沒有真正執行。

嘗試運行以下命令來執行查詢並獲取所有結果。

$items = \App\Item::where('id', $id)->get(); 
1

您需要使用get()first()paginatepluck()find()等來執行查詢。在這種情況下要使用first()方法:

\App\Item::where('id', $id)->first(); 

或者只是:

\App\Item::find($id); 
相關問題