gpt4 book ai didi

php - 使用 Doctrine 按特定列连接表

转载 作者:行者123 更新时间:2023-11-30 01:19:18 25 4
gpt4 key购买 nike

我试图通过检查两个关联表中的变量来获取一个表的单个记录。

例如我的 table 是

user:
id | name
3781 | Foo Manchu

user_programs:
id | user_id | page_id
4150 | 3781 | 16974

Page
id | title | section_id
16974 | Dudes | 3

所以我需要查询并返回section_id为3的用户

用户与 user_program 表关联,该表通过 page_id 与特定页面关联。

这是我所拥有的,但没有返回任何内容:

if($section_id == 3) {
$q = $this->createQuery('u');
$q->leftJoin('u.user_programs up');
$q->leftJoin('up.Page p');
$q->where('u.published=1 AND u.is_preview = 0 AND u.featured=1 AND fp.deleted_at IS NULL');

$q->addWhere('p.section_id=?', $section_id);
$q->orderBy('RAND()')->limit(1);

我可以在不进行连接的情况下成功返回 u 查询,但我需要将查询限制为仅返回关联页面上section_id 为 3 的用户。

最佳答案

如果架构正确,则用户应该具有页面(或类似的)关系。您可以像这样编写查询:

$query = $this->createQuery('u')
->innerJoin('u.Pages p')
->andWhere('u.published = ?', 1)
->andWhere('u.is_preview = ?', 0)
->andWhere('u.featured = ?', 1)
->addWhere('p.section_id = ?', $section_id)
->limit(1)
;

我删除了 fp.deleted_at 部分,因为在使用 SoftDelete (我猜你使用它)和 fp 别名时它没有任何意义无论如何,它并不在原始查询中。

关于php - 使用 Doctrine 按特定列连接表,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18729261/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com