如何检查一列字段数据是否为空,然后检查同一行的其他字段

时间:2019-06-17 18:04:48

标签: php mysql laravel eloquent

我正在从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 请帮我做什么

2 个答案:

答案 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语句,因为纯查询构建器无法做到这一点。

https://laravel.com/docs/5.8/database#running-queries

https://dev.mysql.com/doc/refman/5.7/en/case.html