2017-01-19 20 views
0

私はCategoriesController.phpからitemsテーブルにアクセスしようとしていますが、私のクエリが実行されていないLaravel(5.3)Debugbarにあります。どうして?ここに私のコードは次のとおりです。Where 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

おかげで、この場合、あなたはfirst()メソッドを使用します。申し訳ありません - 私はLaravelに慣れています...回答を受け入れるのに9分待たなければなりません – Gediminas

+1

私はRuby on RailsからLaravelに来ました。そこでは()関数が追加のコマンドなしで実行されているので、これが私を誤解しました。仲間ありがとう! – Gediminas

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

この行は、雄弁は、実行するためのクエリを準備しているが、あなたは実際にそれを実行することはありません。

次のコマンドを実行してクエリを実行し、すべての結果を取得してください。

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

クエリを実行するためにget()またはfirst()またはpaginateまたはpluck()またはfind()などを使用する必要があります。

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

それとも:それは実際に動作

\App\Item::find($id); 
関連する問題