You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Laravel中如何获取link列不为空或非NULL的记录?

在Laravel中获取link列不为空且非NULL的记录

嘿,我来帮你搞定这个问题!你当前的代码$socials = SocialIcon::whereNotNull('link')->get();确实能过滤掉link字段为NULL的记录,但如果数据库里存在link是空字符串('')的记录,这些还是会被查询出来。要同时排除NULL和空字符串,你需要把两个条件结合起来:

方案一:组合whereNotNull和where条件

这是最直观的方式,明确过滤掉NULL和空字符串:

$socials = SocialIcon::whereNotNull('link')
                    ->where('link', '!=', '')
                    ->get();

方案二:使用原生SQL条件(whereRaw)

如果你习惯写原生SQL逻辑,也可以用whereRaw直接拼接条件:

$socials = SocialIcon::whereRaw('link IS NOT NULL AND link != ""')
                    ->get();

额外补充:处理含空白字符的"空值"

如果你的数据库里link字段可能存在仅包含空格、换行等空白字符的记录,还可以通过TRIM函数来过滤:

$socials = SocialIcon::whereNotNull('link')
                    ->whereRaw('TRIM(link) != ""')
                    ->get();

另外提一句:你之前用的get()->all()其实没必要哦——get()方法本身就会返回一个Laravel集合,all()是把集合转换成数组。如果后续需要用集合的便捷方法(比如map、filter),直接用get()返回的集合就好啦!

内容的提问来源于stack exchange,提问作者sd077

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.08 08:27:27