教义:加入一对一的关系

Posted

技术标签:

【中文标题】教义:加入一对一的关系【英文标题】:Doctrine: join one-to-one relation 【发布时间】:2010-12-16 11:13:37 【问题描述】:

假设我们有两个模型:PostViewsCount。关系类型为 1:1。

现在我想检索最近 5 个帖子及其观看次数统计信息:

$posts = PostTable::getInstance()->createQuery('p')
    ->leftJoin('p.ViewsCount') // relation name is "ViewsCount"
    ->orderBy('p.created_at DESC')
    ->limit(5)
    ->execute();

但是,没有运气。它抛出一个错误。如果我取消加入 - 一切正常。

所以,我的问题是 - 如何在 Doctrine 中自动加入/检索一对一关系以避免大量额外查询?

【问题讨论】:

【参考方案1】:

您的语法有误。您还需要告诉学说您要检索 ViewCount 字段:

$posts = PostTable::getInstance()->createQuery('p')
  ->select('p.*, vc.*')
  ->leftJoin('p.ViewsCount vc')
  ->orderBy('p.created_at DESC')
  ->limit(5)
  ->execute();

【讨论】:

谢谢,但没有帮助。现在我又遇到了一个关于补水的错误【参考方案2】:

似乎您应该正确定义关系。 为每个模型定义与类型键(类型:一)的关系。

【讨论】:

以上是关于教义:加入一对一的关系的主要内容,如果未能解决你的问题,请参考以下文章

教义没有在教义上创建一对多关系:模式:更新

关于与查询构建器的“一对多”关系的教义内连接

在教义中只加入一行

教义 - 如何保持多对一同步?

访问为空的左连接成员时的教义痛苦

需要帮助了解一对多的教义