php - Doctrine2相关表缺失值

标签 php mysql doctrine-orm

我遇到一个问题,在查询结果中缺少相关表的值。

我的查询是:

$em = $this->getDoctrine()
        ->getManager();  

$repo = $em->getRepository("DbBundle:Auto"); 
$auto = $repo->findAll();

var_dump($auto);

在 vardump 的输出中,字段 hName 和 hCountry 的值丢失... 我期望该学说自动加载相关表的值,或者我是否另外进行了联接?

C:\Apache24\htdocs\src\DbBundle\Controller\DefaultController.php:90:
array (size=3)
  0 => 
    object(DbBundle\Entity\Auto)[427]
      private 'aId' => int 7
      private 'aName' => string 'A5' (length=2)
      private 'aPs' => int 190
      private 'aHersteller' => 
        object(Proxies\__CG__\DbBundle\Entity\Hersteller)[442]
          public '__initializer__' => 
            object(Closure)[435]
              ...
          public '__cloner__' => 
            object(Closure)[437]
              ...
          public '__isInitialized__' => boolean false
          private 'hId' (DbBundle\Entity\Hersteller) => int 1
          private 'hName' (DbBundle\Entity\Hersteller) => null
          private 'hCountry' (DbBundle\Entity\Hersteller) => null
  1 => 
    object(DbBundle\Entity\Auto)[441]
      private 'aId' => int 8
      private 'aName' => string 'Ibiza' (length=5)
      private 'aPs' => int 130
      private 'aHersteller' => 
      .
      .
      .ASO

实体:自动

  /**
 * Auto
 *
 * @ORM\Table(name="AUTO", uniqueConstraints={@ORM\UniqueConstraint(name="const_auto_name", columns={"A_NAME"})}, indexes={@ORM\Index(name="A_HERSTELLER", columns={"A_HERSTELLER"})})
 * @ORM\Entity
 */
class Auto
{
    /**
     * @var integer
     *
     * @ORM\Column(name="A_ID", type="smallint")
     * @ORM\Id
     * @ORM\GeneratedValue(strategy="IDENTITY")
     */
    private $aId;

    /**
     * @var string
     *
     * @ORM\Column(name="A_NAME", type="string", length=100, nullable=false)
     */
    private $aName;

    /**
     * @var integer
     *
     * @ORM\Column(name="A_PS", type="smallint", nullable=true)
     */
    private $aPs = '0';

    /**
     * @var \DbBundle\Entity\Hersteller
     *
     * @ORM\ManyToOne(targetEntity="DbBundle\Entity\Hersteller")
     * @ORM\JoinColumns({
     *   @ORM\JoinColumn(name="A_HERSTELLER", referencedColumnName="H_ID", fetch="EAGER")
     * })
     */
    private $aHersteller;

实体:赫斯特勒

    /**
 * Hersteller
 *
 * @ORM\Table(name="HERSTELLER", uniqueConstraints={@ORM\UniqueConstraint(name="const_hersteller_name", columns={"H_NAME"})})
 * @ORM\Entity
 */
class Hersteller
{
    /**
     * @var integer
     *
     * @ORM\Column(name="H_ID", type="smallint")
     * @ORM\Id
     * @ORM\GeneratedValue(strategy="IDENTITY")
     */
    private $hId;

    /**
     * @var string
     *
     * @ORM\Column(name="H_NAME", type="string", length=100, nullable=false)
     */
    private $hName;

    /**
     * @var string
     *
     * @ORM\Column(name="H_COUNTRY", type="string", length=100, nullable=false)
     */
    private $hCountry;

Table structure and content:

最佳答案

您需要在 EntityRepository 中创建自定义方法并选择加入关联实体的实体:

namespace AppBundle\Repository;

use Doctrine\ORM\EntityRepository;

class AutoRepository extends EntityRepository
{
    public function findAll()
    {
        return $this->createQueryBuilder('a')
            ->select('a','h');
            ->join('a.aHersteller', 'h');
            ->getQuery()
            ->getResult()
        ;
    }
}

关于php - Doctrine2相关表缺失值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45325246/

相关文章:

php - 如何找到每个页面的所有标签,然后将标签拼接成一列?

php - 将简单列表服务器端/差异存储到本地存储

symfony - 具有附加属性的 Doctrine2 ManyToMany

php - Symfony2 : Unable to use DoctrineExtensions Mysql Year function

php - 如何在 PHP 代码中将两个表中的两个查询合并为一个查询?

java - Android – 安全地向服务器发送/从服务器接收数据

php - 将 mysql 查询逻辑转换为 Laravel 查询生成器

php - 将 PDO::ATTR_EMULATE_PREPARES 更改为 FALSE 并得到 "Invalid parameter number"错误

Symfony 尝试在设置参数中使用 id 数组

php - Symfony2 验证可选字段