我有两种型号的车辆和图像, 车辆有很多图像
public function images(){
return $this->hasMany('App\Image');
}
图片属于一辆车:
public function vehicle(){
return $this->belongsTo('App\vehicle');
}
我检索过的车辆如下: 在控制器中:
$ads=ads::orderBy('views','desc')->get();
foreach ($ads as $ad) {
$popularvehicles[]=vehicles::where('id',$ad->Vehicleid)->get()->toArray();
}
查看:
@foreach($popularvehicles as $popularvehicle)
@foreach($popularvehicle as $vehicle)
{{$vehicle['vname']}}
@endforeach
@endforeach
现在,我想要检索属于$ vehicle的图像。 我尝试过以下语法:
@foreach($popularvehicles as $popularvehicle)
@foreach($popularvehicle as $vehicle)
@foreach($vehicle->image as $image)
<a href="page-product-details.html">
<img src="{{ asset("images/$image->title") }}" alt="{{ $image->title }}" >
</a>
@endforeach
@endforeach
@endforeach
但它抛出了一个例外:试图获得非对象的属性。 我能做些什么来做对吗?
答案 0 :(得分:0)
一个简单的例子:
你有一个模型,模型在另一个模型中有详细信息。
class Vehicle extends Model
{
protected $fillable = [
'brand',
'etc',
];
public function details()
{
return $this->belongsToMany('App\VehicleDetails');
}
}
细节模型:
class VehicleDetails extends Model
{
protected $fillable = [
'color',
'engine',
];
public function vehicle() {
return $this->belongsTo('App\Vehicle');
}
}
我通常使用变换器来返回所需的数据,但您不必这样做。要使用hasMany,您可以这样称呼它:
return Vehicle::find($vehicleId); // Retrieve the vehicles from the server
// the object retrieved has the details.
$vehicle->details; // then you can use contains the details
// example:
@foreach($vehicle->details as $details)
<a href="page-product-details.html">
<img src="{{ asset("images/$details->imagetitle") }}"
alt="{{ $details->title }}" >
</a>
@endforeach
返回的对象包含详细信息,您可以根据需要循环播放。
如果没有关于如何检索数据的更多细节,我就不能更具体了。
答案 1 :(得分:0)
我可以看到2个问题;
您的热门车辆是一个数组阵列
$popularvehicles[]=vehicles::where('id',$ad->Vehicleid)->get()->toArray();
toArray正在将所有内容变成数组。您不再拥有Vehicle对象。 https://laravel.com/docs/5.2/collections#method-toarray
使用 - &gt; all()代替。
第二个问题
@foreach($vehicle->image as $image)
您想使用$ vehicle-&gt; image s