2017-01-13 8 views
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 изображения

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

Изображение belongsTo автомобиля:

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) 

, а затем доступ к изображениям как

$vehicle->Image 

он возвращает объект коллекции, а один автомобиль имеет несколько изображений , Затем в цикле $ vehicle-> Image вы можете получить доступ к свойствам изображения.