给出下表: `+----+
093gszye1#
这是关系的最佳用例:
public function parent() { $this->belongsTo(self::class, 'parent_id'); } public function children() { $this->hasMany(self::class, 'parent_id'); }
$parent = Model::with('children')->find(1); // with eager loading $parent->children;
希望这有帮助。
hwazgwia2#
drnojrws3#
z3yyvxxp4#
--+ | id | parent_id| Name | +----+
b4lqfgs45#
--+` 我有一个有效的mysql查询:
SELECT * FROM packages WHERE id = 3 OR parent_id = 3 OR parent_id = (SELECT parent_id FROM packages WHERE id = 3) OR id = (SELECT parent_id FROM packages WHERE id = 3)
所以如果你更换 3 与 1 你得到的结果和预期的一样。我的包模型中已经有以下函数:
3
1
<?php public function related() { $childParent = Package::select( 'parent_id' )->where( 'id', $this->id )->first(); $query = $this->where( 'id', $this->id ) ->orWhere( 'parent_id', $this->id ); if ( null !== $childParent->parent_id ) { $query ->orWhere( 'parent_id', $childParent->parent_id ) ->orWhere( 'id', $childParent->parent_id ); } return $query; }
但这感觉。。。好。。。丑陋的。我来自symfony,在那里,使用orm查询生成器可以很容易地构建此类查询(并且只需要很少的代码行)。我是不是错过了一个功能在拉雷维尔雄辩,使这个好和短?编辑:我已经得到了这些函数,它们在不选择其他子函数和最终的父函数方面都有不足之处:
<?php public function parent() { return $this->belongsTo( Package::class, 'parent_id' )->withTrashed(); } public function childs() { return $this->hasMany( Package::class, 'parent_id' ); }
l0oc07j26#
pb3skfrl7#
--+ | 1 | NULL | Parent 1| | 2 | 1 | Child 1| | 3 | 1 | Child 2| | 4 | 1 | Child 3| | 5 | NULL | Parent 2| | 6 | 1 | Child 4| | 7 | 1 | Child 5| | 8 | 1 | Child 6| +----+
yhxst69z8#
dgtucam19#
wnavrhmk10#
--+我想选择相同的数据,即使提供的id是否为父级。因此,如果提供的id=1(父项)或id=3(子项),我希望选择完全相同的数据:+----+
我想选择相同的数据,即使提供的id是否为父级。因此,如果提供的id=1(父项)或id=3(子项),我希望选择完全相同的数据:
x9ybnkn611#
bkkx9g8r12#
--+ | 1 | NULL | Parent 1| | 2 | 1 | Child 1| | 3 | 1 | Child 2| | 4 | 1 | Child 3| +----+
3zwtqj6y13#
13条答案
按热度按时间093gszye1#
这是关系的最佳用例:
希望这有帮助。
hwazgwia2#
drnojrws3#
z3yyvxxp4#
--+ | id | parent_id| Name | +----+
b4lqfgs45#
--+` 我有一个有效的mysql查询:
所以如果你更换
3
与1
你得到的结果和预期的一样。我的包模型中已经有以下函数:
但这感觉。。。好。。。丑陋的。我来自symfony,在那里,使用orm查询生成器可以很容易地构建此类查询(并且只需要很少的代码行)。
我是不是错过了一个功能在拉雷维尔雄辩,使这个好和短?
编辑:我已经得到了这些函数,它们在不选择其他子函数和最终的父函数方面都有不足之处:
l0oc07j26#
pb3skfrl7#
--+ | 1 | NULL | Parent 1| | 2 | 1 | Child 1| | 3 | 1 | Child 2| | 4 | 1 | Child 3| | 5 | NULL | Parent 2| | 6 | 1 | Child 4| | 7 | 1 | Child 5| | 8 | 1 | Child 6| +----+
yhxst69z8#
dgtucam19#
--+ | id | parent_id| Name | +----+
wnavrhmk10#
--+
我想选择相同的数据,即使提供的id是否为父级。因此,如果提供的id=1(父项)或id=3(子项),我希望选择完全相同的数据:
+----+x9ybnkn611#
bkkx9g8r12#
--+ | 1 | NULL | Parent 1| | 2 | 1 | Child 1| | 3 | 1 | Child 2| | 4 | 1 | Child 3| +----+
3zwtqj6y13#