我正在尝试循环一个数组但是当涉及到查询时它只获得第一个元素,所以一点帮助就非常重要。
$data = Offers::whereIn('id_business', $business_id_array)
->where([
'visible' => 'yes',
'delete' => 'no'
])
->where('end_date', '>=', date('Y-m-d h:m:i'))
->orderBy('id', 'desc')
->get();
$data=array($data);
foreach($data as $key => $item) {
$offers = DB::select('the data i need to get WHERE o.`id` = ' . $item[$key]['id']);
}
这是我的问题,它只获得第一个元素的id
o.`id` = ' . $item[$key]['id']
答案 0 :(得分:1)
因为你已经在foreach循环中返回了视图,所以它只循环遍历第一个项目并返回。你可以用这种情况做什么
stringarr
答案 1 :(得分:0)
首先,您不需要将$data
强制转换为数组 - 它将作为集合返回,您可以像数组一样迭代。所以你可以使用这样的东西
$offers = Offers::whereIn('id_business', $business_id_array)...->get();
foreach ($offers as $offer) {
$moreData = DB::select('the data i need to get WHERE o.`id` = ?', [$offer->id]);
}
答案 2 :(得分:0)
这看起来就像是在使用一个表中的id来获取另一个表中的关联数据。
如果两个表之间没有关系吗?
@Chris G的回答看起来是正确的,也许是dd($ offer)以确定那里有什么。
米克