学说2-引用特定相关的收集项目

  • 本文关键字:项目 引用 学说 doctrine-orm
  • 更新时间 :
  • 英文 :


在我当前的模型中,我有2个实体:StudentStudentOrdersHistory。我们正在使用历史表来记录学生的所有订单。

但是,我们特别需要使用最新的订单历史记录。首先,我使用了一些圆形参考,如以下内容:

StudentOrderHistory.student_id  --> Student
Student.latest_order  --> StudentOrderHistory

这样做的原因是我们期望有数百行的关系(这里的学生只是一个示例,可以简单地问我需要什么),但是由于我们大多需要与最后一个一起工作,所以我们认为将所有这些加载然后进行一些$student->orders->last()是毫无意义的,因为它必须加载所有记录。

不必说,此实现在删除Student时会带来痛苦,因为循环引用不会让我这样做,而不必先删除Student.latest_order参考。

无论如何,我可以加载到Student属性(例如Student::$latestOrder)中,仅使用DQL?

当然,但是您可能无法直接通过学生对象进行操作。牺牲这种便利性应该可以提高您想要的绩效,实际上最好的做法表明,尽可能多地限制关系。

我尚未测试此代码,但是您可能知道如何使其正常工作。我将在订单式订购中添加一种方法,例如

public function getLatestForStudent(Student $student)
{
    $this->findOneBy(['student' => $student], ['created']);
}

相关内容

  • 没有找到相关文章

最新更新