递归 Eloquent 模型
Recursive Eloquent Models
我有一个 Message::class,我想为每条特定消息获取线程消息。
如何使用 Laravel 和 Eloquent::hasMany
递归获取消息和消息的消息等
到目前为止,我尝试在 hasMany()
上设置递归
public function replys()
{
return $this->hasMany(Message::class, 'reply_to', 'id');
}
public function replies()
{
$r = $this->replys;
if(count($r->get('replys')) > 0){
foreach($r->get('replys') as $reply) {
$r->push(Message::create($reply)->replies());
}
}
return $r;
}
但我好像没看懂。目前我正在尝试查看是否可以使用 pivot table 和 reference belongsToMany
。会让你知道事情的进展
研究让我找到 this thread,它建议如何通过 hasMany
获取递归记录
因此
public function replys()
{
return $this->hasMany(Message::class, 'reply_to', 'id');
}
public function replies()
{
return $this->replys()->with('replies');
}
没想到会这么简单,但我希望我可以保持简单,而不必设计复杂的原始查询语句。
我现在的问题是这种递归方法如何经得起大数据集?
我有一个 Message::class,我想为每条特定消息获取线程消息。
如何使用 Laravel 和 Eloquent::hasMany
递归获取消息和消息的消息等到目前为止,我尝试在 hasMany()
上设置递归public function replys()
{
return $this->hasMany(Message::class, 'reply_to', 'id');
}
public function replies()
{
$r = $this->replys;
if(count($r->get('replys')) > 0){
foreach($r->get('replys') as $reply) {
$r->push(Message::create($reply)->replies());
}
}
return $r;
}
但我好像没看懂。目前我正在尝试查看是否可以使用 pivot table 和 reference belongsToMany
。会让你知道事情的进展
研究让我找到 this thread,它建议如何通过 hasMany
因此
public function replys()
{
return $this->hasMany(Message::class, 'reply_to', 'id');
}
public function replies()
{
return $this->replys()->with('replies');
}
没想到会这么简单,但我希望我可以保持简单,而不必设计复杂的原始查询语句。
我现在的问题是这种递归方法如何经得起大数据集?