我正在从MySQL数据库检索数据,条件是如果签出数据字段为null,则检查发送到该特定行的发送字段
id | SSC | hhc | dip
1 | 50 | 50 | null
2 | 60 | null| 60
3 | 50 | 55 | null
条件为“ hhc”和“ dip”都不都是空,并且它们一次都不会填充
我真的不知道该怎么办 我尝试
$users->where('student_masters.hhc','>=' ,60);
$users->where('student_masters.dip','>=' ,60);
我检索了所有数据,但条件为if('student_masters.hhc' == null)
,然后检查另一个字段表示student_masters.dip
请帮我做什么
答案 0 :(得分:0)
->where(function ($q) {
$q->where('student_masters.hhc','!=' ,null);
$q->where('student_masters.dip','=' ,null);
})
->orWhere(function ($q) {
$q->where('student_masters.hhc','=' ,null);
$q->where('student_masters.dip','!=' ,null);
})
这可能会对您有所帮助。尽管我不清楚问题是什么。
答案 1 :(得分:0)
如果您只想提取任一列的值,而不管它来自哪一列,则可以使用MySQL case语句。如果hhc为null,则可以使用dip的值。
$users->select( DB::raw("CASE WHEN hhc IS NULL THEN dip ELSE hhc END AS data_value") )->get();
请注意,我们在这里使用原始的select语句,因为纯查询构建器无法做到这一点。