我有一个从拉威尔收集的雄辩的问题。这里祖父有很多孩子(父亲),父亲有很多孩子(孙子)。返回的结果如下:
[
{
"grand_father_id": "26",
"fathers": [
{
"father_id": "101",
"children": [
{
"child_id": "77",
"children_weight": [
{
"weight": "30.00",
}
]
},
{
"child_id": "84",
"children_weight": [
{
"weight": "20.00",
}
]
}
]
},
{
"father_id": "102",
"children": [
{
"child_id": "78",
"children_weight": [
{
"weight": "50.00",
}
]
}
]
}
]
},
{
"grand_father_id": "27",
"fathers": [
{
"father_id": "100",
"children": [
{
"child_id": "83",
"children_weight": [
{
"weight": "100.00",
}
]
}
]
}
]
},
{
"grand_father_id": "28",
"fathers": [
{
"father_id": "105",
"children": [
{
"child_id": "81",
"children_weight": [
{
"weight": "80.00",
}
]
},
{
"child_id": "82",
"children_weight": [
{
"weight": "0.00",
}
]
}
]
}
]
},
{
"grand_father_id": "29",
"fathers": [
{
"father_id": "108",
"children": [
{
"child_id": "79",
"children_weight": [
{
"weight": "44.00",
}
]
},
{
"child_id": "80",
"children_weight": [
{
"weight": "56.00",
}
]
}
]
}
]
},
{
"grand_father_id": "30",
"fathers": [
{
"father_id": "107",
"children": [
]
}
]
}
]
我如何计算所有祖父的所有孙子的总数。我当然可以使用嵌套循环来计算这个。但是有没有其他Laravel集合方法可以做到这一点?顺便说一下,我在这里举的祖父、父亲、孙子的例子只是一个假名的例子。真正的字段是目标
,操作
,success_indicators
,success_indicator_weight
。获取集合的查询为:
return Objective::with([
'actions' => function($query) {
$query->select(['action_id', 'action_description', 'objective_id_fk']);
}, 'actions.successIndicators' => function($query) {
$query->select('success_indicator_id', 'success_indicator_description', 'action_id_fk');
}, 'actions.successIndicators.SuccessIndicatorYearWeight' => function($query) {
$query->select('success_indicator_weight', 'success_indicator_unit', 'success_indicator_id_fk');
},
])->get()
在嵌套数组上执行各种操作的array_*助手方法有很多,但我不认为有任何方法可以为您的事业服务。你可以自己检查-http://laravel.com/docs/5.0/helpers#arrays
我不知道自己是否有任何内置的集合,但是你可以考虑每个祖父类的访问器方法:
class Grandfather extends Eloquent
{
...
public function getTotalGrandchildrenAttribute()
{
$total_grandchildren = 0;
// loop through each father
foreach ($this->fathers as $father) {
$total_grandchildren += count($father->children);
}
return $total_grandchildren;
}
}
然后在你的剧本中:
$grandfathers = Grandfathers::all();
$total_grandchildren = 0;
foreach ($grandfathers as $grandfather) {
$total_grandchildren += $grandfather->total_grandchildren;
}
echo "Total grandchildren: $total_grandchildren";
http://laravel.com/docs/5.0/eloquent#accessors-和突变子
此外,您可能希望将用于('父亲')
,并将用于('儿童')
,而不是如上所示使用all(),这样您就不会在每次要获取父亲/儿童时都点击DB:
$grandfathers = Grandfathers::with(array('fathers' => function($query) {
$query->with('children');
});
http://laravel.com/docs/5.0/eloquent#eager-装载
问题内容: 假设我有两个表,“父母”和“孩子”。父子关系是一个多对多关系,可通过标准的交叉引用表来实现。 我想查找使用SQL(特别是MS SQL Server的T-SQL; 2005语法可以接受)的给定子集的所有成员所引用的所有Parent记录。 例如,假设我有: List item Parent Alice Parent Bob Child Charlie references Alice, B
问题内容: 在Firebase的数据库中,我需要更新open的值并将其传递给 所有子级的false。我如何用Java语言做到这一点?像这样 问题答案: Firebase数据库没有与SQL等效的数据库UPDATE messages SET open=false。 要更新Firebase中的节点,您必须首先具有对该特定节点的引用。为了获得对节点的引用,您必须知道该 节点的完整路径。 这意味着您首先需要
问题内容: 我有一个带有多个子SKSpriteNode的SKNode。一个简化的例子: 我想对所有这些孩子采取行动。当我在上执行操作时,没有任何效果。 我不能在父项上使用,因为它的许多子项已经具有我正在使用的名称。 有没有一种方法可以遍历的所有子项,以便对所有子项执行单个操作? 问题答案: 您可以简单地列举: 如有必要,请检查每个孩子是否确实是: 从 Swift 2(Xcode 7)开始, 可以将
问题内容: 我父母的渲染中有以下代码 以及下面我孩子图表中的代码 我以为仅在所有子项都加载后才调用父级的componentDidMount。但是在这里,父级的componentDidMount在子级的componentDidMount之前被调用。 这是工作方式吗?还是我做错了什么。 如果这是工作方式,我如何检测从父级加载所有子级组件的时间? 问题答案: 是的,孩子的称为父母之前的。 运行下面的代码
问题内容: SQL开发人员,我有一个计划不周的数据库作为任务,以学习有关SQL Server 2012的很多知识。 所以,有表: 更新该行后,我需要检查element的父键,以不允许element自anny之类。 当我删除该行时,我需要删除所有孩子以及孩子的孩子,等等。 问题是: 如何选择DIST的一个元素的所有“父母+祖父母+等等”? 我如何选择DIST元素中的所有“儿子+孙子+等”? 我读过有
本文向大家介绍如何使用jQuery从父级删除所有子级节点?,包括了如何使用jQuery从父级删除所有子级节点?的使用技巧和注意事项,需要的朋友参考一下 要从父级删除所有子节点,请使用方法。该方法从匹配的元素集中删除所有子节点。 示例 您可以尝试运行以下代码以了解如何从父级删除所有子节点-