23592


お世話になります。  
<http://qiita.com/zaburo/items/9fefa3f6834b2e79b734>  
こちらを参考にし、laravelで検索を実装することができました。

しかしながら検索の詳細表示ができず困っています。  
routes.php

[code]

    Route::get('/detail/{id}', 'SearchController@detail');
    
[/code]

SearchController.php

[code]

            public function detail($id) {
    
                $query = DB::table('item_master')->where('id',$id);
    
                return view('layouts.detail.index')->with('query',$query);
        }
    
[/code]

layouts.detail.index.blade.php

[code]

    <div>{{$query->id}}</div>
    <div>{{$query->item_name}}</div>
    
[/code]

こちらで取得することができません。  
おそらく$queryでvar_dumpすると意図しないものがでてくる(無限ループ？)のでおそらくそこなのですが  
何が間違っているのかわかりません。  
ちなみにitem_masterテーブルには一意のidとitem_nameが入っています。

大変低レベルな質問で申し訳ないのですが  
ご教授のほどお願いいたします。


CC BY-SA 3.0
2016-03-29T05:52:14.190
23588
2016-03-29T07:12:11.847
14968
question
laravel laravel-5
laravel5.2で検索結果の詳細表示


[その記事の詳細表示の節](http://qiita.com/zaburo/items/9fefa3f6834b2e79b734#5%E8%A9%B3%E7%B4%B0%E8%A1%A8%E7%A4%BA)を見ると、次のようなコードが書かれていますね。

[code]

    public function show($id)
    {
        //レコードを検索
        $user = User::find($id);
        //検索結果をビューに渡す
        return view('users.show')->with('user',$user);
    }
    
[/code]

この `User::find()` を `DB::table(..)->where(..)` に書き換えたようですが、
**これらは使い方が異なるため、単純に置き換えることはできません** 。

`User` はLaravelのEloquentという機能を使った、usersテーブルへのアクセスを担うクラスで、`find()`
は指定したIDのレコードを単一のオブジェクトで返します。

一方あなたが使っているのはQuery Builderという機能です。これは`DB::table(..)` に対して順番に `select()`
`join()` `where()` などのメソッドを呼び出すことでクエリを組み立て、`get()` `first()`
などのメソッドで結果を取得する、という流れになります。ですから、

[code]

    $query = DB::table('item_master')->where('id',$id);
    
[/code]

これではクエリを組み立てただけで、結果を取得していません。

例えばEloquentの `find()` のように一件だけ取得したいのであれば、出来上がったクラスに対して `first()`
を呼び出します。この結果にはEloquentと同様にしてアクセスができます。

[code]

    $item = DB::table('item_master')->where('id', $id)->first();
    // この$itemに対して、例えば$item->item_nameとしてアクセスできる
    
[/code]

参考 [データベース：クエリービルダー 5.1
Laravel](http://readouble.com/laravel/5/1/ja/queries.html)

・・・と、Query
Builderの話をしてきましたが、Qiita記事のようにEloquentを使うことも可能です。それぞれ自由度や書き方が異なりますから、お好きな方を選んで構いません。

  * [初めてのLaravel 5.1 : (9) モデルの作成 – ララ帳](https://laravel10.wordpress.com/2015/02/28/%E5%88%9D%E3%82%81%E3%81%A6%E3%81%AElaravel-5-9-%E3%83%A2%E3%83%87%E3%83%AB%E3%81%AE%E4%BD%9C%E6%88%90/)
  * [Eloquent：利用の開始 5.1 Laravel](http://readouble.com/laravel/5/1/ja/eloquent.html)


CC BY-SA 3.0
2016-03-29T07:12:11.847
23592
2016-03-29T07:12:11.847
8000
23588
answer