2017-01-13 4 views
1

1つまたは複数のテーブルからデータを取得しようとしています。しかし、それは働いていません。車とイメージの2つのモデルがあります。車両は複数の画像を有することができるが、画像は1つの車両のみを有することができる。これは、未定義の変数を示している:画像私のモデルは以下のとおりです。1つから多数へのデータ検索。 Laravel

//Image: 
class Image extends Model 
{ 
    protected $fillable = ['title','filepath']; 

    public function vehicles(){ 

     return $this->belongsTo('App\vehicles'); 
    } 
} 

//Vehicle: 
class vehicles extends Model 
{ 

    protected $fillable = ['vname','lotno','engine','mileage','kilometers','features','price','negotiable','vcondition','used','manufacture_year','description','Company_cid','Sellers_sid','Vehicle_Type_id']; 

    public function Image(){ 
     return $this->hasMany('App\Image'); 
    } 
} 

//Controller: 
public function index() 
    { 
     $vehicle_type=vehicle_types::where('type','Bike')->get()->first(); 

     $id=$vehicle_type->id; 

     $vehicles=vehicles::where('Vehicle_Type_id',$id)->get(); 

     return view('Bike.index',compact('vehicles')); 
    } 

ビュー:私は私が間違っているのか知ってはいけない

@foreach($vehicles as $vehicles) 
     <div class="col-sm-4"> 
      <!-- Product --> 
       <div class="shop-item"> 
        <!-- Product Image --> 
          <div class="image"> 
           <a href="page-product-details.html"><img src="{{ asset("images/$vehicles->$image->title") }}" alt="{{ $vehicles->$image->title }}" ></a> 
          </div> 
        <!-- Product Title --> 
          <div class="title"> 
           <h2><a href="page-product-details.html">{{$vehicles->vname}}</a></h2> 
           <h3><a href="page-product-details.html">{{$vehicles->lotno}}</a></h3> 
          </div> 
@endforeach 

。誰でも助けてくれますか?すべての

答えて

0

メイクモデル名単数形:車で、画像

車両hasManyの画像車両belongsToの

public function images(){ 
     return $this->hasMany('App\Image'); 
    } 

画像:

public function vehicle(){ 

     return $this->belongsTo('App\vehicle'); 
    } 

とコントローラのindex()方法で:

$vehicles=Vehicle::where('Vehicle_Type_id',$id)->get(); 

はあなたにコレクションを提供します。

そして、ビュー内:

@foreach($vehicles as $vehicle) 
    @foreach($vehicle->images as $image) 
    <a href="page-product-details.html"><img src="{{ asset("images/$image->title") }}" alt="{{ $image->title }}" ></a> 
    @endforeach 
    <h2><a href="page-product-details.html">{{$vehicle->vname}}</a></h2> 
    <h3><a href="page-product-details.html">{{$vehicle->lotno}}</a></h3> 
@endforeach 
0

まず、あなたのループが間違っているために、それは

@foreach($vehicles as $vehicle) 

ようになり、1台の車両が複数のイメージを持っているとして、その後、アクセスイメージが

$vehicle->Image 

ようにそれは、コレクションオブジェクトを返します。 。 $ vehicle-> Imageのループで、Imageプロパティにアクセスできます。

関連する問題