我有自定义实体存储库(让我们说CategoryRepository
)返回Doctrine实体。我也有新创建的实体(让我说Product
)我想坚持下去。
产品与类别有关,在这种情况下,产品是关系的拥有方,所以我有以下代码:
$category = $categoryRepository->customGetCategory($someCriteria);
$product = new Product();
$product->setCategory($category);
$em->persist($product);
,结果是
[学说\ ORM \ ORMInvalidArgumentException]
通过这种关系找到了一个新实体 '的Acme \ SomethingBundle \实体\产品类别#'没有配置 为实体级联持续运营:blahblah。要解决这个问题 问题:在此未知上显式调用EntityManager#persist() 实体或配置级联在映射中保持此关联 例如@ManyToOne(..,cascade = {" persist"})
现在我知道默认情况下,\Doctrine\ORM\Query::getResult()
工厂方法返回Query对象时使用EntityManager::createQuery($dql)
方法的自定义存储库方法返回的所有实体都是分离的。所以我已经在存储在数据库中的存储库返回了实体,而我无法找到一种方法让教条像f返回的任何实体一样进行管理。恩。 $repository->findBy()
方法。
有人能指出我正确的方向吗?我真的很想解决这个问题,它会杀了我。
答案 0 :(得分:0)
这可能是提出的五大主义问题之一。只是很难搜索。可以尝试搜索错误消息。
问题是从不调用Category :: setProduct。使用以下命令更新您的产品实体
class Product
{
public function setCategory($category);
{
$this->category = $category;
$category->setProduct($this); // *** Add this
}
}