【发布时间】:2019-05-02 18:51:51
【问题描述】:
我有一个实体叫 Category,另一个叫 Product,中间一个叫 CategoryProduct。
- 我在 Category 和 CategoryProduct 之间有一个关系 OneToMany:
@ORM\OneToMany(targetEntity="CategoryProduct", mappedBy="Catego", fetch="EAGER")与 CategoryProduct 类中的 inversedBy(在 $catego 上)。 - 我在 CategoryProduct 和 Product 之间有 OneToOne 关系:
@ORM\OneToOne(targetEntity="Product", inversedBy="Category")与 Product 类中的 inversedBy(在 $category 上)。
在我的 CategoryController 中,我有一个这样的功能:
public function getCategoryAction(Request $request)
{
$category = $this->get('doctrine.orm.entity_manager')
->getRepository('AppBundle:Category')
->findAll();
return new JsonResponse($category);
}
返回给实体Category的集合,但是“子实体”Product是空的。当我在 Symfony 中检查 Token for debbug 时,我检查了 Doctrine 部分并且查询工作完美,数据加载它只是在我的返回中没有。我可以使用$category->getProduct() 访问数据(它为我提供了我想要的类别的产品链接集合),但我的产品子类仍然是空的。有谁知道为什么?
感谢您的帮助。
【问题讨论】:
-
尝试运行
php bin/console doctrine:schema:validate --skip-sync,看看是否有任何映射错误。 ` -
...或
doctrine:shema:update -
除了 Carl 对验证架构的有用建议:您确定每个产品只能有一个 CategoryProduct 吗?为什么首先使用“中产阶级”? "inversedBy="Category"" 意味着,您需要在 Product 类上有一个 $Category 属性。但它实际上不是一个类别,它是一个 CategoryProduct。
-
我已经尝试了架构验证/更新,没有问题。我需要中间的类来获取一些我无法保存在其他任何地方的信息,属性的名称不相关,可以随意调用。无论如何感谢您的帮助
标签: php symfony doctrine symfony-3.4