在查询laravel中获取数组的所有元素

时间:2017-06-09 13:51:06

标签: php arrays laravel laravel-5

我正在尝试循环一个数组但是当涉及到查询时它只获得第一个元素,所以一点帮助就非常重要。

 $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']

3 个答案:

答案 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)以确定那里有什么。

米克