从一到多的数据检索。 Laravel

Data Retrieval from one to many. Laravel

我正在尝试从一对多检索数据 table。但不是 working.There 是两个模型:车辆和图像。一个车辆可以有多个图像,但一个图像只能有一个车辆。它显示未定义 variable:image 我的模型是:

//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

我不知道我做错了什么。谁能帮帮我?

首先你的for循环是错误的,会是

@foreach($vehicles as $vehicle)

然后,访问像

这样的图像
$vehicle->Image

它将return收集对象,因为一辆车有多个图像。 然后在$vehicle->Image的循环中,可以访问Image属性。

使模型名称成为单数: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();

会给你一个collection.

并且,在视图中:

@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