Como ordenar por em OneToMany / ManyToOne

Eu tenho uma classe de produto que tem muitos campos para ManyToMany, tais como ingredientes, tamanhos, espécies, etc. Um total de cerca de 14 campos diferentes Nem todos os campos são relevantes para cada produto.

Eu tenho o mapeamento configurado assim

Class product {
/**
 * @var Species[]
 * @ORM\ManyToMany(targetEntity="Species")
 * @ORM\JoinTable(name="product_species",
 *      joinColumns={@ORM\JoinColumn(name="productId", referencedColumnName="id")},
 *      inverseJoinColumns={@ORM\JoinColumn(name="speciesId", referencedColumnName="id")}
 *      )
 * @ORM\OrderBy({"name" = "asc"})
 */
private $species;

Isso funciona muito bem para muitos / muitos para um.

O problema está na minha tabela product_ingredients eu precisava adicionar um campo adicional, ou seja, precisa mudar de ManyToMany para um OneToMany / ManyToOne Assim como este

/**
     * @var ProductIngredient[]
     *
     * @ORM\OneToMany(targetEntity="ProductIngredient", mappedBy="product")
     * @ORM\JoinColumn(name="productId", referencedColumnName="id")
     */
    private $ingredients;

Agora minha entidade ProductIngredient parece com isso

 /**
     * @var IngredientType
     * @ORM\ManyToOne(targetEntity="IngredientType", fetch="EAGER")
     * @ORM\JoinColumn(name="ingredientTypeId", referencedColumnName="id")
     */
    private $ingredientType;


    /**
     * @var Ingredient
     *
     * @ORM\ManyToOne(targetEntity="Ingredient", inversedBy="products", fetch="EAGER")
     * @ORM\JoinColumns({
     *   @ORM\JoinColumn(name="ingredientId", referencedColumnName="id")
     * })
     */
    private $ingredient;

    /**
     * @var Product
     *
     * @ORM\ManyToOne(targetEntity="Product", inversedBy="ingredients")
     * @ORM\JoinColumns({
     *   @ORM\JoinColumn(name="productId", referencedColumnName="id")
     * })
     */
    private $product;

Então, na minha classe de produto para espécies eu uso o @ORM \ OrderBy para que as espécies já estejam ordenadas. Existe alguma maneira que eu possa de alguma forma fazer isso para o meu campo de ingredientes?

Ou estou fazendo minha lógica errada e estes não deveriam ser campos na classe de produtos e deveriam estar procurando pelo repositório?

Eu estava querendo que fosse fácil, então eu poderia passar pelos meus objetos como$product->getIngredients() em vez de fazer

$ingredients = $this->getDoctrine()->getRepository('ProductIngredient')->findByProduct($product->getId());

questionAnswers(5)

yourAnswerToTheQuestion