如何在Laravel 5.1中使用NOT FIND_IN_SET?

3

当我们在 Laravel 中使用 FIND_IN_SET 来搜索逗号分隔值时,可以这样写:

->whereRaw('FIND_IN_SET(2,sent_mail_ids)')

但现在我想获取那些逗号分隔值中不存在的结果。为此,我们在MySQL中使用NOT FIND_IN_SET,但是在Laravel中如何使用呢?


3
->whereRaw('NOT FIND_IN_SET(2,sent_mail_ids)') 可翻译为“->whereRaw('NOT FIND_IN_SET(2, sent_mail_ids)')”,意思是在查询中筛选出sent_mail_ids字段中不包含数字2的结果。 - Mihai
1个回答

9

whereRaw()允许你向查询中添加任意的SQL代码 - 要反转约束条件,只需使用与原始SQL相同的查询:

->whereRaw('NOT FIND_IN_SET(2,sent_mail_ids)')

或者这个约束的另一种变体:
->whereRaw('FIND_IN_SET(2,sent_mail_ids) = 0')

1
@Insomania 不以需要在集合中查找为前提来存储数据是最正确的方式。但对于上述两个版本,这并不重要。 - Mihai
2
@Mihai,对不起,我没有理解你的意思。 - Amrinder Singh
@Insomania 你可以选择任何一个,我认为第一个更易读。 - Amir Bar
我会选择第一种形式,因为它明确告诉您检查的内容 - 您不需要关心或知道 FIND_IN_SET 的返回值。 - jedrzej.kurylo

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接