检查从 Laravel 8 中 eloquent 返回的特定值
Posted
技术标签:
【中文标题】检查从 Laravel 8 中 eloquent 返回的特定值【英文标题】:Check a specific Value that returned from eloquent in Laravel 8 【发布时间】:2021-11-20 10:00:53 【问题描述】:在我的 Laravel 控制器中,我有以下代码:
public function test($id)
$emp_check = logentry::where([
['EmployeeFK', '=', $id],
['DateTime', '>', Carbon::now()->subHours(8)]
])->latest()->get();
return $emp_check;
这些是从数据库返回的
"LogID": 2,
"DateTime": "2021-09-28 08:16:44",
"LocationX": null,
"LocationY": null,
"EmployeeFK": 1,
"Status": "checked out",
"ErrorResponse": null,
"SalaryChingValue": null,
"SalaryNote": null,
"LogNote": null,
"created_at": "2021-09-28 11:16:44"
有什么方法可以检查 eloquent 结果返回的“状态”值吗? 我知道有一些特定的方法可以做到这一点,但我真的不知道怎么写。
【问题讨论】:
是否要从集合中检索status
的列表?
我想检查从 eloquent 中检索到的这些 JSON 中的状态值
既然可能不止一个,您要单独检查还是批量检查?
我想检查一个单独的值
您的表格中的“状态”类型是什么?
【参考方案1】:
您可以在退货前简单地执行以下操作:
if($emp_check['Status'] == 'your condition')
//do something
不确定这是否是您需要的,如果不是,请更新您的问题。
【讨论】:
不幸的是这些答案不起作用,因为返回的数据类型实际上是员工的模型【参考方案2】:也许我理解错了,但是试试
$emp_check = logentry::where('EmployeeFK', $id)
->where('DateTime', '>', Carbon::now()->subHours(8))
->where('Status', $status)
->latest()->get();
或将其中一种状态更改为
$emp_check = logentry::where('EmployeeFK', $id)
->where('DateTime', '>', Carbon::now()->subHours(8))
->whereIn('Status', $statuses)
->latest()->get();
【讨论】:
【参考方案3】:当您使用get()
方法来查找结果时。 get()
方法将返回一个可以循环的记录数组。您在 where 条件 中使用 id,所以如果您总是得到一条记录,您可以使用:
if($emp_check[0]->Status == 'your status')
//do something
最好使用first()
获取单条记录。
或者你可以使用foreach loop
if($emp_check)
foreach($emp_check as $v)
if($v->Status == 'your status')
//do something
【讨论】:
以上是关于检查从 Laravel 8 中 eloquent 返回的特定值的主要内容,如果未能解决你的问题,请参考以下文章
有没有办法在 Laravel 5.8 中测试 Eloquent Observers?
Laravel 在急切加载时使用 Eloquent 选择特定列