2017-01-13 4 views
1

Ich versuche, Daten von einer zu vielen Tabelle abzurufen. Aber es funktioniert nicht. Es gibt zwei Modelle: Fahrzeuge und Bild. Ein Fahrzeug kann mehrere Bilder haben, aber ein Bild kann nur ein Fahrzeug haben. Es zeigt undefinierte Variable: Bild Meine Modelle sind:Datenabruf von einem zu vielen. 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')); 
    } 

Ausblick:

@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 

Ich weiß nicht, was mache ich falsch. Kann mir jemand helfen?

Antwort

0

Fabrikat Modellbezeichnung Singular: Fahrzeug, Bild

Fahrzeug hasMany Bilder

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

Bild belongsTo ein Fahrzeug:

public function vehicle(){ 

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

Und in index() Methode der Steuerung:

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

wird Ihnen eine Sammlung geben.

Und im Blick:

@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

Zu allererst Ihre for-Schleife falsch ist, wird es als

@foreach($vehicles as $vehicle) 

sein und dann Zugang Bilder wie

$vehicle->Image 

wird es Sammlung Objekt zurück, als ein Fahrzeug mehrere Bilder hat . Dann können Sie in der Schleife von $ vehicle-> Image auf die Image-Eigenschaften zugreifen.

Verwandte Themen