【问题标题】:WhereIn in eloquent orm以雄辩的形式在哪里
【发布时间】:2017-08-22 22:31:24
【问题描述】:

我有两个数组

temp[]
time[]

例如,如果我的数组中有类似这样的数据

    temp   time 
[0]  80     45
[1]  70     50
[2]  85     65
[3]  90     30 

我想根据这两个数组参数查询数据 比如 (select * from MyTable where (temperature = 80 and time = 45 )) for next (select * from MyTable where (temperature = 70 and time = 50)) 等等

我正在做这样的事情

 $mix=MyTable::whereIN('temperature', $temp)
         ->whereIN('time', $time)->where('category',$cat)
         ->get();

但它让我感到高兴的输出是这两个参数的组合。不完全是从数组 0 到以后...

我希望我正确地解释了我的问题..

我试过这个..

    $result=Ergebnisse::where('name_id', $nam)->where('geometrie_id', $geo)->get();
    foreach ($result as $key => $res) {

$mix=Ergebnisse::where('temperatur', $res->temperatur)
         ->where('zeit', $res->zeit)->groupBy('katogorie_id')
         ->get();

}

当 i dd($mix) 只显示一个结果。但根据我的数据库,它应该显示不止一个

【问题讨论】:

  • 你能试试 foreach 循环吗?使用 foreach 循环遍历两个数组,然后使用以下值进行查询: $mix=MyTable::where('temperature', $temp)->where('time', $time)->where('类别',$cat)->first();
  • 只显示一个结果是行不通的
  • 一个结果?您能否更新问题以包含您尝试过的新代码?
  • $mix[] = Ergebnisse::where('temperatur', $res->temperatur) ->where('zeit', $res->zeit)->groupBy('katogorie_id') ->get();
  • $mix = Ergebnisse::where('katogorie_id', $kat) ->where(function($q) use($result) { foreach ($result as $item) { $q- >orWhere(function($q) use($item) { $q->where('temperatur', $item->temperatur) ->where('zeit', $item->zeit); }); } } )->groupBy('name_id')->get();我在@Alexey Mezenin 的帮助下解决了这个问题

标签: php laravel orm eloquent


【解决方案1】:

whereIn() 在这里不起作用。做这样的事情:

$data = MyTable::where('category', $cat)
    ->where(function($q) use($array) {               
        foreach ($array as $item) {
             $q->orWhere(function($q) use($item) {
                 $q->where('temperature', $item['temp'])
                   ->where('time', $item['time']);
            }
        }
    })->get();

【讨论】:

  • @HassanHaroon $array 是一个包含数据的数组。只需使用您在应用中使用的变量名称即可。
  • 我是 laravel 和 orm 的新手。我现在这样做了,它说未定义变量:数据
  • $result=Ergebnisse::where('name_id', $nam)->where('geometrie_id', $geo)->get();
  • $data = Ergebnisse::where('katogorie_id', $kat) ->where(function($q) use($result) { foreach ($result as $item) { $data = $data->orWhere(function($q) use($item) { $q->where('temperature', $item['temp']) ->where('time', $item['time'] ); }); } })->get();
猜你喜欢
  • 2015-06-20
  • 2014-04-14
  • 1970-01-01
  • 2019-09-23
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2020-10-13
  • 1970-01-01
相关资源
最近更新 更多