Используя приведенный ниже пример доктрины, я хотел бы иметь возможность вернуть все функции при запросе продукта.
Так эффективно selecting all products where feature.product_id = product.id
Но хотелось бы сделать это доктриной объектно-ориентированного пути, если это возможно. Есть ли в доктрине способ сопоставить эти отношения противоположным образом?
<?php
use Doctrine\Common\Collections\ArrayCollection;
/** @Entity **/
class Product
{
// ...
/**
* @OneToMany(targetEntity="Feature", mappedBy="product")
**/
private $features;
// ...
public function __construct() {
$this->features = new ArrayCollection();
}
}
/** @Entity **/
class Feature
{
// ...
/**
* @ManyToOne(targetEntity="Product", inversedBy="features")
* @JoinColumn(name="product_id", referencedColumnName="id")
**/
private $product;
// ...
}
Спасибо,
Выбор продукта в этом случае, где product.id = feature.product_id будет возвращать только 1 результат, при условии, что идентификатор таблицы ваших продуктов является ее первичным ключом, автоматически увеличивается. Вы уверены, что не пытаетесь вернуть все функции где feature.product_id == (конкретный product.id)?
Если последний случай,
$features = $em->getRepository('MyBundle:Feature')
->findBy(
array('product_id' => $productId)
);
Где у вас в руках $ productId, уникальное целое число.
Других решений пока нет …