数据检索从一个到多个。 Laravel

时间:2017-01-13 09:43:20

标签: laravel laravel-5.2 one-to-many information-retrieval

我正在尝试从一个到多个表中检索数据。但它没有用。有两种型号:车辆和图像。车辆可以具有多个图像,但是图像可以仅具有一个车辆。它显示未定义的变量: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'));
    }

我不知道我做错了什么。任何人都可以帮助我吗?

2 个答案:

答案 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