php - Laravel:在 Laravel 中连接表并在其他表上循环
问题描述
我要加入 3 张桌子、财产、设施和图像。一个属性有很多设施,有很多图像。
在我的查询中,它循环相同的属性多少次它有设施和图像,每个循环得到 1 个设施和 1 个图像。我需要完成的是它将循环每个属性,并获取属性的所有设施和图像。
$properties = DB::table('properties')
->join('facilities', 'properties.id', '=', 'facilities.property_id')
->join('images', 'properties.id', '=', 'images.property_id')
->select('properties.*', 'facilities.feature_name', 'images.img_url')
->paginate(10);
属性模型
public function facilities() {
return $this->hasMany(Facility::class);
}
public function images() {
return $this->hasMany(Image::class);
}
设施模型
public function property() {
return $this->belongsTo(Property::class);
}
图像模型
public function property() {
return $this->belongsTo(Property::class);
}
刀
@foreach ($properties as $property)
{{ $property->title }},
@endforeach
解决方案
你可以急切地加载你的关系:
$properties=\App\Models\Property::with(['facilities:property_id,feature_name','images:property_id,img_url'])->paginate(10);
在刀片中,您可以执行以下操作:
@foreach ($properties as $property)
{{ $property->title }}
@foreach ($property->facilities as $facility)
{{ $facility->feature_name}}
@endforeach
// for the images you can do the same
@endforeach
推荐阅读
- php - 使用 .htaccess/functions.php 更改搜索网址
- javascript - 由于不推荐使用的圆形 json,Angular 项目创建失败
- c# - 如何设置 WCF IIS 托管服务自动启动?
- computer-vision - Pytorch:修改 VGG16 架构
- python - Python Pandas 连接多个数据帧
- swift - 十进制字段的正则表达式问题 - Swift
- javascript - 有人可以帮我理解比较功能是如何在这里进行排序的吗?
- typescript - Firestore 安全规则不适用于特定领域
- dns - 使用 https 将域和子域从 Route53 指向 DigitialOcean
- reactjs - 第三方子组件不会在 ReactJS 中从父级的道具更改时更改