我有一个名为User
的基本实体类,它有3个可能的不同子类Employee
,Customer
和Student
。这是通过单个表继承实现的。
基类User
有两个名为name
和prename
的字段,所有子类都继承这些字段。
现在我的问题:我有一个名为UserRepository
的自定义存储库,其方法为findByFullTextSearch(string $searchterm): User[]
,我在这两个字段上实现了一些全文搜索,以满足我的需求(不幸的是,我做了)没有可能使用DoctrineExtensions为这个项目实现MySQL函数FIND_IN_SET
或实际的全文搜索。)
我是否有可能只在UserRepository
中编写此方法一次,所以当我使用$doctrine->getRepository(Student::class)->findByFullTextSearch('john doe');
时,我只得到适合我从其调用的存储库的结果?
get_called_class()
或$this->_entityName
传递给父类。findByFullTextSearch
我在这里找到a related question,但不完全相同。
有更好的解决方案吗?提前谢谢。
答案 0 :(得分:0)
我刚刚通过简单地将基类添加为每个子实体的存储库来找到解决方案:
<?php
namespace UserBundle\Entity;
use Doctrine\ORM\Mapping as ORM;
/**
* UserBundle\Entity\Customer.
*
* @ORM\Entity(repositoryClass="UserBundle\Repository\UserRepository")
*/
class Customer extends User
{
// ...
这样我就不需要空的子存储库来为学说找到一个可能的入口点。