gpt4 book ai didi

laravel - 检查列是否为空 Laravel

转载 作者:行者123 更新时间:2023-12-04 14:37:32 26 4
gpt4 key购买 nike

我的数据库表中有此列('time_out'):
enter image description here
如您所见 time_outnull ,当我做这个查询时:

$checkertimeout = Attendance::where('emp_id', $request->emp_id)
->where('attend_date', $date)->get(['time_out']);
我得到这个输出:

[{"time_out":null}]


但是当我在 if-else statement: 中使用它时
if ($checkertimeout->isEmpty())
{
echo "works";
}
else
{
echo "wont work";
}
显示 不能用 .
感谢任何帮助,我是 Eloquent 查询的新手:)

最佳答案

首先,当你这样做时:

$checkertimeout = Attendance
::where('emp_id', $request->emp_id)
->where('attend_date', $date)
->get(['time_out']); // <---

您收到了 Collection所有的 time_out每个 Attendance 的字段符合您的条件的模型( where s)。这意味着,像这样:

=> Illuminate\Database\Eloquent\Collection {#3323
all: [
App\Attendance {#3332
attend_date: "2019-10-06 22:01:29",
},
App\Attendance {#3340
attend_date: "2019-10-06 22:01:29",
},
App\Attendance {#314
attend_date: null,
},
],
}


您可以在 Eloquent section 中获得更多信息的文档。

现在,如果您的查询旨在仅获取一条记录,您可以使用 ->first()方法而不是 get()一。此方法将返回第一个 Attendance符合您条件的对象。
$checkertimeout = Attendance
::where('emp_id', $request->emp_id)
->where('attend_date', $date)
->first(); // <---

PS:如果只需要检索 time_out值,您还可以添加 ->select('attend_date')到查询:
$checkertimeout = Attendance
->select('time_out'); // <---
::where('emp_id', $request->emp_id)
->where('attend_date', $date)
->first(); // <---

有了这些澄清,让我们来回答你的问题。如果你想检查一个字段是否为空..你可以使用 PHP 函数 is_null() .

使用集合
$checkertimeout = Attendance
::where('emp_id', $request->emp_id)
->where('attend_date', $date)
->get(['time_out']);

if(is_null($checkertimeout->first()->time_out))
{
// ...
}

使用单个对象
$checkertimeout = Attendance
->select('time_out'); // <---
::where('emp_id', $request->emp_id)
->where('attend_date', $date)
->first(); // <---

if(is_null($checkertimeout->time_out)) // <----
{
// ...
}

边注

作为旁注,如果您想避免该值的空结果,您可以在查询中添加另一个约束:
$checkertimeout = Attendance
::where('emp_id', $request->emp_id)
->where('attend_date', $date)
->whereNotNull('time_out') // <-----
->get(['time_out']);

关于laravel - 检查列是否为空 Laravel,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58263285/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com