假设我有一个“产品”实体。
但我需要留在productRepo中,这意味着我想做类似以下的事情:
/**
* @ORM\Entity
* @ORM\Table(name="es_product")
*/
class Product extends \Kdyby\Doctrine\Entities\BaseEntity {
/**
* @ORM\Id
* @ORM\Column(type="integer")
* @ORM\GeneratedValue
*/
private $id;
...
/**
* @ORM\OneToMany(targetEntity="ProductLang", mappedBy="product", cascade={"ALL"}, indexBy="iso")
*/
protected $contentLang;
...
和 ProductLang 实体
/**
* @ORM\Entity
* @ORM\Table(name="es_product_lang")
*/
class ProductLang extends \Kdyby\Doctrine\Entities\BaseEntity {
/**
* @ORM\Id
* @ORM\ManyToOne(targetEntity="\App\Modules\CmsAdmin\Model\Lang")
*/
protected $lang;
/**
* @ORM\Id
* @ORM\ManyToOne(targetEntity="Product", inversedBy="contentLang")
*/
protected $product;
/**
* @ORM\Column(type="string")
*/
protected $name;
正如您所看到的,产品和产品语言之间存在一对多的连接。
问题是,是否有可能使用Doctrine的“findBy()”方法从“Product”存储库中根据productLang.name查找产品?
我知道我可以做一些类似的事情
productLangRepo->findBy( [ 'product' => $product, 'name' => $name])
但我需要留在productRepo中,这意味着我想做类似以下的事情:
productRepo->findBy( [ 'contentLang["iso"]->name' => $name ])