laravel 5.6 - 获取属于多个的多层父子的数据
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了laravel 5.6 - 获取属于多个的多层父子的数据相关的知识,希望对你有一定的参考价值。
想象一下,我有一个网站有很多catalogs
有sections
和每个section
,我有items
。
catalogs
是与belongstomany
的sections
。sections
是与belongstomany
的items
。
我想要的最终结果是有一个嵌套数据:
{
"catalog_id": 1,
"catalog_name": "catalog 01",
"sections": [
{
"section_id": 1,
"name": "section 01",
"items": [
{
"item_id": 1,
"item_content": {
"name": "some content1"
}
},
{
"item_id": 2,
"item_content": {
"name": "some content2"
}
},
{
"item_id": 3,
"item_content": {
"name": "some content3"
}
}
]
},
{
"section_id": 2,
"name": "section 02",
"items": [
{
"item_id": 2,
"item_content": {
"name": "some content2"
}
},
{
"item_id": 3,
"item_content": {
"name": "some content3"
}
},
{
"item_id": 4,
"item_content": {
"name": "some content4"
}
}
]
}
]
}
我怎样才能做到这一点?
从技术上讲,我可以使用each-loop
得到我想要的任何东西,但我希望这是Eloquent
更好的解决方案。
答案
试试这个
Catalogs::with('sections.items')->get();
另一答案
我会在@ J.Doe回答你可以指定你想做的事情。例如
Catalogs::with([
'sections' => function($query){
return $query->select('column')
->where('someCondition', 1)
->orderBy('id', 'asc');
'items' => //some other stuff
];
你也可以使用方法with()
来表达你的关系。让我们说sections
与someTable
有关。如果你的someTable
模型中有关系方法section
,那么:
Catalogs::with([
'sections' => function($query){
return $query->select('column')
->with('someTable') // here's your relation
->where('someCondition', 1)
->orderBy('id', 'asc');
'items' => //some other stuff
];
以上是关于laravel 5.6 - 获取属于多个的多层父子的数据的主要内容,如果未能解决你的问题,请参考以下文章
Laravel 5.6 上的 419 Ajax 错误 - 已编辑
快速向有关系的表中插入 200 多个数据 - Laravel 5.6