2016-03-25 19 views
0

私の画像が格納されているデータベースにテーブルphotosがあります。 1つのビューでは、ユーザーはすべてを見ることができますが、もう1つのビューでは最初に1つのイメージしか表示されません。それらをすべて設定するのではなく、最初の画像だけを表示するように設定する方法は?Laravel 5.2 - データベースの最初の画像を表示

これは私のコードです。

ビュー

@foreach($business->photos as $photo) 

    <img src="{{ url($photo->thumbnail_path) }}" class="img-thumbnail"> 

@endforeach 

ProfileController

public function profile($id) 
{ 
    $user = User::findOrFail($id); 

    return view('business.profile', compact('user')); 
} 

Photo.php

public function business() 
{ 
    return $this->belongsTo('App\Business'); 
} 


public function baseDir() 
{ 
    return 'images/'; 
} 

public function setNameAttribute($name) 
{ 
    $this->attributes['name'] = $name; 

    $this->path = $this->baseDir() . '/' . $name; 

    $this->thumbnail_path = $this->baseDir() . '/tn' . $name; 
} 

をPhotosControllerあなたの意見で

public function store($id, AddPhotoRequest $request) 
{ 
    $business = Business::fidOrFail($id); 

    $photo = $request->file('photo'); 

    (new AddPhotoToBusiness($business, $photo))->save(); 
} 
+0

uがモデルとコントローラを表示することができますか? Model::("あなたのクエリ"、条件、 "") - >ファースト()を使用することができる方法で –

+0

。 –

+0

プロファイルでは最初の写真だけを表示したいが、他の画像にはすべての画像を表示するオプションがある。 – Verse

答えて

0

ソリューション

@if(count($business->photos)) 
    <img src="{{ url($business->photos[0]->thumbnail_path) }}" class="img-thumbnail" alt=""> 
@else 
    <img src="{{ URL::asset('/img/no-image.png') }}" class="img-responsive" alt=""> 
@endif 
0

を、あなたが最初に使用array.ifを得ている()foreachの中で、あなたはそのエラーを取得します。例えば

@foreach($business->photos as $photo) 
    <img src="{{ url($photo->thumbnail_path) }}" class="img-thumbnail" 
     alt=""> 
@endforeach 

->here $business->photos holding an array.in that if you use $business->photos->first() .it shows error 

ですから、これを使用する場合、それはあなたがいることを必要とするどの値バインドのみ1行

を示し、

<?php $x=$business->photos->first(); ?> 

ビューでは、PHPタグを使用$ x変数に存在します。

関連する問題