2016-04-10 6 views
1

製品に関連する写真がたくさんある場合、どの写真に写真を表示するのですか?たとえば、フロントページに1枚の写真を表示するだけで、カルーセルをやりたくはありません。ここで私はこれまで持っているものです。制限1写真を多く表示する - Laravel 5.2

My Product Images

あなたはイムのために、各ループをやって、それがその製品に関連付けられているすべての画像が表示されて、見ることができるように、私は1つの画像だけを表示したいです。ここで

は、私は、画像を表示しています方法です:

@foreach($products->photos as $photo)     
    <img src="/store/{{ $photo->thumbnail_path }}"> 
@endforeach 

マイコントローラこのページの商品を表示する:

class ProductsController extends Controller { 


    /** 
    * Show all products 
    * 
    * @return \Illuminate\Contracts\View\Factory|\Illuminate\View\View 
    */ 
    public function showProducts() { 
     // Get all products 
     $product = Product::all(); 

     return view('admin.product.show', compact('product')); 
    } 

} 

私の製品モデル(短縮):

class Product extends Model { 

    /** 
    * One Product can have many photos. 
    * 
    * @return \Illuminate\Database\Eloquent\Relations\HasMany 
    */ 
    public function photos() { 
     return $this->hasMany('App\ProductPhoto'); 
    } 

} 

そして、私の製品画像テーブルがどのように見えるか、これは次のとおりです。

My Images Table

My Products Table

答えて

2

ディッチ@foreachや写真集にfirst()を使用します。

<img src="/store/{{ $products->photos->first()->thumbnail_path }}"> 

あなたがしたい場合はを選択することができますあなたの特集は、あなたcありがとう

<img src="/store/{{ $products->featuredPhoto->thumbnail_path }}"> 
+0

ああSNAPP、本当の素敵:写真テーブルにブールfeatured列を追加し、このような何かウルド:

public function featuredPhoto() { return $this->hasOne('App\ProductPhoto')->whereFeatured(true); } 

をして! – David

+1

@Davidよろしくお願いします!熱心な写真の読み込みも考慮する必要があります(または、各テーブルの行ごとに1つのクエリで各レコードの写真を検索します)。 '$ product = Product :: with( 'photos') - > get();' $ product = Product :: all(); 'の代わりに' '$ product = Product :: https://laravel.com/docs/5.2/eloquent-relationships#eager-loading – ceejayoz

+0

申し訳ありませんでした。それは写真をより速く読み込みますか? – David

関連する問題