Symfony 3.4 - Doctrine多对一返回Object ID但不返回Object本身

时间:2018-01-22 08:42:29

标签: php symfony doctrine-orm doctrine

自上周以来,我开始学习Symfony,虽然一般的东西很容易学习,但学说似乎很痛苦。

目前,我使用以下签名制作了两个实体:

<?php

namespace NutritionApiBundle\Entity;

// ...
use Doctrine\Common\Collections\ArrayCollection;
// ...

/**
 * Company
 *
 * @ORM\Table(name="company")
 *     @ORM\Entity(repositoryClass="NutritionApiBundle\Repository\CompanyRepository")
 */
class Company {
    /**
     * @var string
     *
     * @ORM\Column(name="id", type="guid")
     * @ORM\Id
     * @ORM\GeneratedValue(strategy="UUID")
     */
    private $id;

    // ...

    /**
     * @var string
     * @ORM\OneToMany(targetEntity="NutritionApiBundle\Entity\Product", mappedBy="company")
     */
    protected $products;

    public function __construct() {
        $this->products = new ArrayCollection();
    }

    // ...
}

<?php
namespace NutritionApiBundle\Entity;

use Doctrine\ORM\Mapping as ORM;
// ...

/**
 * Class Product
 *
 * @package NutritionApiBundle\Entity
 *
 * @ORM\Entity
 * @ORM\Table(name="product")
 */
class Product {
    /**
     * @var string
     * @ORM\Column(type="guid")
     * @ORM\Id
     * @ORM\GeneratedValue(strategy="UUID")
     */
    protected $id;

    // ...

    /**
     * @var Company
     *
     * @ORM\Column(type="guid", name="company", nullable=false)
     * @ORM\ManyToOne(targetEntity="NutritionApiBundle\Entity\Company", inversedBy="products")
     * @ORM\JoinColumn(name="company", referencedColumnName="id")
     */
    protected $company;

    // ...

    /**
     * Return the product company
     *
     * @return Company
     */
    public function getCompany() {
        return $this->company;
    }

    /**
     * Set the product company.
     *
     * @param Company $company
     *
     * @return Product
     */
    public function setCompany( Company $company ) {
        $this->company = $company;

        return $this;
    }
}

但是当我尝试执行以下代码时:

$product = $this->getDoctrine()->getRepository(Product::class)->findOneBy(['id' => '0642d735-fcfd-11e7-afae-0242c0a86002']);

return $this->render( '@NutritionApi/Default/index.html.twig', [ 'product' => $product ] );

index.html.twig里面我有这段代码:

{{ dump(product.company) }}

输出如下:

"e65af24f-fd0a-11e7-afae-0242c0a86002"

虽然我需要完整的公司对象作为输出。

你看到我的代码有什么问题吗?我已多次阅读我的代码和注释,以发现错误,但我找不到任何东西。

我认为唯一可能是问题的是我用于数据库中实体的GUID id,但我不确定这是问题。

有任何建议吗?

1 个答案:

答案 0 :(得分:4)

您可能需要删除

@ORM\Column(type="guid", name="company", nullable=false)

来自Product $ company property。