Tengo una clase de producto que tiene muchos campos en ManyToMany, como ingredientes, tamaños, especies, etc. Un total de aproximadamente 14 campos diferentes No todos los campos están relevante para cada productoCómo realizar un pedido en OneToMany/ManyToOne
tengo mapeo configurado como esto
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;
Esto funciona muy bien para un muchosamuchos/manyto uno.
El problema está en mi mesa product_ingredients que necesitaba para agregar un campo adicional, es decir, la necesidad de cambiar de ManyToMany a un OneToMany/ManyToOne Así como esto
/**
* @var ProductIngredient[]
*
* @ORM\OneToMany(targetEntity="ProductIngredient", mappedBy="product")
* @ORM\JoinColumn(name="productId", referencedColumnName="id")
*/
private $ingredients;
Ahora mi ProductIngredient Entidad tiene este aspecto
/**
* @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;
Entonces, en mi clase de producto para especies utilizo @ORM \ OrderBy para que la especie ya esté ordenada. ¿Hay alguna forma en que de alguna manera también pueda hacer esto para mi campo de ingredientes?
¿O estoy haciendo mal mi lógica y estos ni siquiera deberían ser campos en la clase de producto y deberían estar simplemente buscando en el repositorio?
yo quería que fuera fácil, así que pude bucle a través de mis objetos como $product->getIngredients()
en lugar de hacer
$ingredients = $this->getDoctrine()->getRepository('ProductIngredient')->findByProduct($product->getId());
esto arroja un error (Unrec campo identificado: nombre) porque "nombre" no existe en ProductIngredient. Está en entidad Ingrediente. – Kris
que es un error en sus otras asignaciones no en este ... –
¿Me puede dar un ejemplo? Mi entidad de producto se conecta con ProductIngredient, que se conecta con Ingredient. Intenté hacer el pedido en la clase productingredient pero, como es muchtoone, se ignora – Kris