【问题标题】:Recursive Eloquent Models递归雄辩模型
【发布时间】:2017-02-18 20:04:13
【问题描述】:

我有一个 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;
}

但我似乎错过了标记。目前我正在尝试查看是否可以使用数据透视表并引用 belongsToMany 。会让你知道事情的进展

【问题讨论】:

  • 如何创建一个线程模型,其中每个线程可以有许多消息并且消息属于单个线程。
  • @tam 也在想同样的事情。想知道我是否应该创建一个数据透视表并使用belongsToMany 以我的方式工作,不得不跳下它一段时间,但很快就会发布调查结果

标签: laravel laravel-5.3 laravel-eloquent


【解决方案1】:

研究让我找到了this thread,它建议如何通过hasMany 获取递归记录

因此

public function replys()
{
  return $this->hasMany(Message::class, 'reply_to', 'id');
}

public function replies()
{
  return $this->replys()->with('replies');
}

没想到会这么简单,但我希望我可以保持简单,而不必设计复杂的原始查询语句。

我现在的问题是这种递归方法如何经受住大型数据集?

【讨论】:

    猜你喜欢
    • 2019-06-24
    • 2021-08-11
    • 2015-08-15
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-05-10
    • 2014-12-05
    • 1970-01-01
    相关资源
    最近更新 更多