自上周以来,我开始学习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,但我不确定这是问题。
有任何建议吗?
答案 0 :(得分:4)
您可能需要删除
@ORM\Column(type="guid", name="company", nullable=false)
来自Product $ company property。