laravel - 如何使用 laravel 关系从数据库中获取数据
问题描述
我在一个主页上工作,我必须在其中显示功能类别供应商滑块。听到的是我想要的:
我想从类别表中获得随机的 3 个特色类别,并且每个类别都有 6 个供应商,我也想显示这些供应商。
数据库结构:
类别表包含is_featured
标志。
id | is_featured
1 | 1
2 | 1
3 | 1
4 | 1
... so on
我有供应商类别表,其中我已经映射了供应商和那里的类别。
供应商类别映射表
id | sup_id | cat_id
1 | 1 | 1
2 | 2 | 2
3 | 3 | 3
4 | 4 | 4
5 | 5 | 5
...so on
和供应商表,其中我有供应商的详细信息。
供应商表
id | sup_name ....Other details
1 | ABC
2 | DEF
3 | HIJ
4 | LLK
5 | OPQ
6 | SDE
...so on
到目前为止我所尝试的。
我已经尝试提供hasMany
关系但得到空项目数组。我认为该类别有很多供应商,所以我添加了很多。
public function supplierList()
{
return $this->hasMany('App\DB\Supplier\SupplierCategoryDetail', 'cat_id', 'id');
}
一些我如何弄清楚它以获得随机类别。但使用后with()
它给出了空的结果。
$data['featured_category'] = Category::with('supplierList')->where('status','1')->inRandomOrder()->limit(3)->get();`
我对 laravel 和它的关系完全陌生。我在 laravel 中使用 eloquent 来做这件事。
解决方案
由于您使用枢轴,因此可以使用“多对多”关系。在这种情况下,您要使用belongsToMany
.
您的关系如下所示:
return $this->belongsToMany(
'App\DB\Supplier\SupplierCategoryDetail',
'SupplierCategoryMappingTable', // or what the name is of the table
'cat_id',
'sup_id'
);
我也没有status
在您的类别表中看到该列。看起来应该是这样is_featured
。
未经测试,我认为您的最终查询可能如下所示:
Category::with('supplierList')
->where('is_featured', '1')
->inRandomOrder()
->limit(3)
->get();
推荐阅读
- java - 模块化配置类组装 - 设计问题
- r - 使用(如果可能)函数方法基于正则表达式 (regex) 的向量修改向量
- angular - Angular Rxjs - 条件运算符
- openstack-autopilot - 你能用不同的语言发送自动驾驶信息吗?
- java - 这种具有二分搜索和while循环的算法的时间复杂度是多少?
- powershell - 使用 PowerShell -Pattern 在多个文件中搜索多个值
- vulkan - 尝试为 3D 图像创建 2D 阵列图像视图时出现 Vulkan 验证错误
- alert - Alertmanager,不同警报规则的不同间隔
- r - 基于不同列的R数据表styleColorBar
- elasticsearch - 在 Elasticsearch 中,有没有办法为复合查询中的每个查询获取 hits.total.value?