php - 4张表laravel之间的关系
问题描述
我有 4 张桌子
套餐:
id
name
测试:
id
name
subcategory_id
类别:
id
name
parent_id = 0 // if main category
包测试:(数据透视表)
id
package_id
test_id
我想在每个包中使用这样的类别进行测试
packages: [
name: package1
categories: [
{
name: mainCategory1
tests: [
{test1},
{test2}
]
},
{
name: mainCategory2
tests: [
{test3},
{test4}
]
}
]
]
我在模型之间建立了一些关系,但我无法实现这种代码形式。
解决方案
我期待Tests
桌子有category_id
。
制作类似的模型(阅读更多关于 Laravel 关系的信息):-
包.php
public function packageTests()
{
return $this->hasMany(PackagesTests::class)
}
包测试.php
public function tests()
{
return $this->hasOne(Test::class)
}
测试.php
public function category()
{
return $this->hasOne(Category::class)
}
我对映射(一对一,一对多)一无所知。我猜他们,希望他们是对的。
现在像访问它们一样。
Package::with('packageTests')
->with('packageTests.tests')
->with('packageTests.tests.category')
->where('condition_array')
->get()
推荐阅读
- javascript - 我使用了 styled-components 组件,我想在 Input 获得焦点时在它旁边显示一个按钮,但它不起作用
- apache-spark - Databricks Spark 引发 java.io.NotSerializableException:com.amazonaws.services.s3.AmazonS3Client
- node.js - “在“@angular/platform-browser”中找不到导出“文档”(导入为“i23”)
- r - 在 R Shiny 中调整 Plotly::subplot 的高度和宽度
- django - mypy 和 django:错误:没有为“六”安装库存根(或与 Python 3.9 不兼容)
- actions-on-google - 如何在 Google Nest 设备上结束会话
- postgresql - 如何计算上个月到本月的值
- java - 得到错误 org.hibernate.HibernateException:命名查询中的错误:customers.amountDeposit,customers.amountWithdraw
- javascript - 导航通过 NavLinks 后 useState 值重置
- html - 有没有办法让每个锚点/按钮在调整网络屏幕大小时不改变/移动它的位置?