2016-12-04 14 views
4

私はlaravelを学んでおり、ブログを構築していたyoutubeチュートリアルに従っています。とにかく、私は単一のブログ投稿を表示するページを作ろうとしており、idの代わりにslugを使って表示しています。Laravel first()vs take(1) - > get()

class BlogController extends Controller { 

    public function getSingle($slug) { 
     $post = Post::where('slug', $slug)->take(1)->get(); 
     return view('blog/single')->with('post', $post); 
    } 
} 

しかし、この方法で、それは文句を言わない私のブログ/単一のビュー..に動作し、私は$ポストにアクセスカント>例えばタイトル:とにかく、これが私のブログコントローラです。しかし、私がこのようにすると:

class BlogController extends Controller { 

    public function getSingle($slug) { 
     $post = Post::where('slug', $slug)->first(); 
     return view('blog/single')->with('post', $post); 
    } 
} 

..それはうまく動作します。私はタイトル、ボディにアクセスでき、時々作成/更新されます。

最初の方法は機能しません。

ありがとうございます。 :)

答えて

9

take(1)->get()collectionを1つの要素で返します。

first()は要素自体を返します。

+0

get()メソッドを使用すると、私は常にコレクションを取得し、表示したい場合はループしなければなりません。 – bawsi

+0

@miqro。 –

関連する問題