我正在尝试从一个到多个表中检索数据。但它没有用。有两种型号:车辆和图像。车辆可以具有多个图像,但是图像可以仅具有一个车辆。它显示未定义的变量:image我的模型是:
Write-Verbose "Hallo $p"
查看:
//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'));
}
我不知道我做错了什么。任何人都可以帮助我吗?
答案 0 :(得分:0)
首先,你的for循环是错误的,它将是
@foreach($vehicles as $vehicle)
然后,访问图像
$vehicle->Image
它将返回集合对象,因为一辆车有多个图像。 然后在$ vehicle-> Image的循环中,您可以访问图像属性。
答案 1 :(得分:0)
使模型名称为单数:Vehicle,Image
车辆有很多图像
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