gpt4 book ai didi

php - Doctrine 在 JOIN 选择上返回空对象

转载 作者:行者123 更新时间:2023-11-30 22:44:13 25 4
gpt4 key购买 nike

我的 symfony 类存储库中有这个函数:

public function findAllByIdShop($id)
{
return $this->getEntityManager()
->createQuery(
'SELECT s, c
FROM AppBundle:ShopCategory s
JOIN s.category c
WHERE s.shop = :shop_id
ORDER BY c.name'
)
->setParameter(':shop_id', $id)
->getResult();
}

查询返回最后一个记录类别(别名 c)作为 NULL 值,如果我通过“SELECT s”更改选择行,我将通过延迟加载 Doctrine 获得正确的结果,我想避免延迟加载。

例如,如果我在存储库查询中有四个名为“c1、c2、c3、c4”的类别,我将获得 null 的 c4。

我的类看起来像那样(请注意,我使用多对一、单向关系来避免双向关系)

<?php

namespace AppBundle\Entity;

use Doctrine\ORM\Mapping as ORM;

/**
* ShopCategory
*
* @ORM\Table()
* @ORM\Entity
*/
class ShopCategory
{


/**
* @ORM\Id
* @ORM\ManyToOne(targetEntity="AppBundle\Entity\Shop")
*/
private $Shop;


/**
* @ORM\Id
* @ORM\ManyToOne(targetEntity="AppBundle\Entity\Category")
*/

private $Category;


/**
* Set Shop
*
* @param AppBundle\Entity\Shop $Shop
* @return ShopCategory
*/
public function setShop(\AppBundle\Entity\Shop $Shop)
{
$this->Shop = $Shop;

return $this;
}

/**
* Get Shop
*
* @return AppBundle\Entity\Shop
*/
public function getShop()
{
return $this->Shop;
}

/**
* Set Category
*
* @param AppBundle\Entity\Category $Category
* @return ShopCategory
*/
public function setCategory(\AppBundle\Entity\Category $Category)
{
$this->Category = $Category;

return $this;
}

/**
* Get Category
*
* @return AppBundle\Entity\Category
*/
public function getCategory()
{
return $this->Category;
}
}

最佳答案

试试这个

 public function findAllByIdShop($id)
{
return $this->getEntityManager()
->createQuery(
'SELECT s, c
FROM AppBundle:ShopCategory sc
JOIN sc.category c
JOIN sc.shop s
WHERE s.<id_field> = :shop_id
ORDER BY c.name'
)
->setParameter(':shop_id', $id)
->getResult();
}

关于php - Doctrine 在 JOIN 选择上返回空对象,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30128425/

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