为了账号安全,请及时绑定邮箱和手机立即绑定

如何使用 whereIn 和 take 函数从 laravel 中的 SQL 获取数据?

如何使用 whereIn 和 take 函数从 laravel 中的 SQL 获取数据?

PHP
慕勒3428872 2022-12-03 11:08:59
您可以将其类型转换为浮点数:$value = (float) $column[1];为了确保你确实有一个浮点数,你可以尝试像这样检查if (is_numeric($column[1]) && !is_int($column[1])) {    $value = (float) $column[1];}
查看完整描述

3 回答

?
守候你守候我

TA贡献1802条经验 获得超10个赞

根据您的评论,我认为您需要一个分组查询。


$userBikes = array('862549040389788','12345');


$data = DB::table('geolocation')

->whereIn('Imei', $userBikes)

->groupBy('Imei')

->selectRaw('any_value(id) as id, any_value(Lat) as Lat, any_value(Lng) as Lng, any_value(created_at) as created_at, Imei')

->get();


查看完整回答
反对 回复 2022-12-03
?
九州编程

TA贡献1785条经验 获得超4个赞

如果您希望$userBikes数组中的每个元素有 1 个值,则需要进行 2 个不同的查询。


$userBikes = array('862549040389788','12345');

$output = array();



foreach($userBikes as $imei) { 

    $data = DB::table('geolocation')

       ->where('Imei',$imei)

       ->take(1)      

       ->get()->toArray();

    array_push($output, $data)

return $output;

第二种解决方案是take(1)从查询中删除并过滤数据对象中的每个值。


查看完整回答
反对 回复 2022-12-03
?
函数式编程

TA贡献1807条经验 获得超9个赞

您必须take(1)从查询中删除。

Take(1) 会将结果限制为 1 行。

所以应该是:

$data = DB::table('geolocation')
    ->whereIn('Imei',$userBikes)      
    ->get();


查看完整回答
反对 回复 2022-12-03
  • 3 回答
  • 0 关注
  • 107 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信