我在Symfony for Videos中有一个实体。让我们说db看起来像这样:
id: int
name: varchar
uploader: int (User Entity)
video_mp4: varchar
param1: int
param2: int
param3: int
我想加载类似的视频。类似的意思是:
实际上我想通过大多数匹配来订购它们(意味着由同一个用户上传的视频和相同的param1 + param3应该比param2匹配的更重要)类似于{{1}任何想法如何实现 为此,我使用了这个查询(是的,我知道"或者"对数据库不好,欢迎消费;)
我在我的Entity类中创建了一个如下所示的函数:($ q是一个QueryBuilder)
ORDER BY mostMatches DESC
两个问题:
答案 0 :(得分:1)
您可以将所有这些匹配项加起来:
SELECT
*,
(CAST(e.uploader = ?1 AS UNSIGNED)
+ CAST(e.param1 = ?2 AS UNSIGNED)
+ CAST(e.param2 = ?3 AS UNSIGNED)
+ CAST(e.param3 = ?4 AS UNSIGNED)
) AS matches_count
FROM video
ORDER BY matches_count DESC