Symfony 3.4 - Doctrine多对一返回Object ID但不返回Object本身
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Symfony 3.4 - Doctrine多对一返回Object ID但不返回Object本身相关的知识,希望对你有一定的参考价值。
从上周开始我开始学习Symfony,虽然一般的东西很容易学习,但学说似乎是一个巨大的痛苦。
目前,我使用以下签名制作了两个实体:
<?php
namespace NutritionApiBundleEntity;
// ...
use DoctrineCommonCollectionsArrayCollection;
// ...
/**
* Company
*
* @ORMTable(name="company")
* @ORMEntity(repositoryClass="NutritionApiBundleRepositoryCompanyRepository")
*/
class Company {
/**
* @var string
*
* @ORMColumn(name="id", type="guid")
* @ORMId
* @ORMGeneratedValue(strategy="UUID")
*/
private $id;
// ...
/**
* @var string
* @ORMOneToMany(targetEntity="NutritionApiBundleEntityProduct", mappedBy="company")
*/
protected $products;
public function __construct() {
$this->products = new ArrayCollection();
}
// ...
}
和
<?php
namespace NutritionApiBundleEntity;
use DoctrineORMMapping as ORM;
// ...
/**
* Class Product
*
* @package NutritionApiBundleEntity
*
* @ORMEntity
* @ORMTable(name="product")
*/
class Product {
/**
* @var string
* @ORMColumn(type="guid")
* @ORMId
* @ORMGeneratedValue(strategy="UUID")
*/
protected $id;
// ...
/**
* @var Company
*
* @ORMColumn(type="guid", name="company", nullable=false)
* @ORMManyToOne(targetEntity="NutritionApiBundleEntityCompany", inversedBy="products")
* @ORMJoinColumn(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,但我不确定这是问题所在。
请问有什么建议吗?
答案
您可能需要删除
@ORMColumn(type="guid", name="company", nullable=false)
来自Product $ company property。
以上是关于Symfony 3.4 - Doctrine多对一返回Object ID但不返回Object本身的主要内容,如果未能解决你的问题,请参考以下文章