如何检查任何实体是否包含任何字段上的指定字符串?

时间:2017-08-10 13:48:20

标签: php symfony doctrine-orm

如何检查任何实体是否包含任何字段上的指定字符串?

我们假设我们有很多实体,如博客,新闻,文章等。每个实体都可以有一些字段,如标题,内容,作者等。但并非所有实体都有相同的字段。他们可以是不同的。现在我们要检查是否有来自其字段的实体包含“cat”。重要的是我不想获得这些实体。我想知道是否有这样的实体。

这是因为我有文本编辑器(如MCE),它允许上传文件并将它们(URL)直接放入编辑的字段中。例如:邮件正文或文章内容中的图像。所以我有上传文件的机制,但我不知道上传的文件是否还需要,或者我可以删除它们,因为在删除实体后,文件不会被删除。

因此,我正在尝试检查文件名是否在任何字段的任何实体中使用。当然我可以这样做:

$builder = $this->manager->createQueryBuilder();
$builder->select('COUNT(blog)');
$builder->from('AppBundle:Blog', 'blog');
$builder->where('blog.content LIKE :term');
$builder->setParameter('term', '%' . $file->getFilename() . '%');

但是这样,我必须记住为文本编辑器可编辑的每个字段添加类似的查询。我不想记得。

我正在寻找简单而有弹性的解决方案。我想到SOLR,但SOLR的实体数量将会很低。这对我来说没有意义 - 就像用bazuka杀死蚊子一样(不好的例子。那只是有道理的 - 被诅咒的蚊子。但是你知道。)

我正在使用Symfony2和Doctrine。

有什么想法吗?

0 个答案:

没有答案