+-----------------+ +------------------------------------+
| item table | | description table |
+----+------+-----+ +----+---------+------+--------------+
| id | name | ... | | id | item_id | lang | text |
+----+------+-----+ +----+---------+------+--------------+
| 1 | 1st | ... | | 1 | 1 | en | english text |
+----+------+-----+ +----+---------+------+--------------+
| 2 | 2nd | ... | | 2 | 1 | de | deutsch text |
+----+------+-----+ +----+---------+------+--------------+
| 3 | 2 | en | english text |
+----+---------+------+--------------+
class Item {
...
/**
* @ORM\OneToMany(targetEntity="\Application\Entity\Desc", mappedBy="item")
*/
protected $description;
...
}
class Desc {
...
/**
* @ORM\ManyToOne(targetEntity="\Application\Entity\Item", inversedBy="description")
* @ORM\JoinColumn(name="item_id", referencedColumnName="id")
*/
protected $item;
/**
* @ORM\Column(name="text")
protected $text;
public function getDesc(/*passing lang*/)
{
//there returned array of values, not single result
return $this->text;
}
...
}
У меня два стола с родственниками OneToMany. Я установил тег комментария @ORM в сущности и успешно получил массив описаний в сущности элемента (EN и De lang). Как я могу получить только одно описание языка, передавая аргумент языка в сущность описания без итерации массива и лишней строки SQL в запросе БД?