为什么foreach只在laravel打印一个值?

时间:2017-10-13 20:59:03

标签: php laravel foreach laravel-5.2

我有一个方法:

public function winnerDetails()
{     
    $winners = DB::table('winners')->get();   
    //dd($winners);
    foreach ($winners as $winner) {
        $qrMainId = $winner->qrdetails_id;
    }
   dd($qrMainId);
}

dd($winners);返回array的值但是当我使用foreach时,它会返回一个值。如何通过foreach循环获得返回值?

dd($winners)输出:

enter image description here

dd($qrMainId);返回一个值44。但是它应该返回数组35的另一个值;提前谢谢。

4 个答案:

答案 0 :(得分:1)

获取ID的数组

   foreach ($winners as $winner) {
    $qrMainId[]= $winner->qrdetails_id;

仅用于价值

   $qrMainId='';
   foreach ($winners as $winner) {
    $qrMainId.= $winner->qrdetails_id;

答案 1 :(得分:0)

如果您想以Laravel方式完成此任务,请使用pluck方法将数组映射到您想要的键

 <?php
public function winnerDetails()
{     
    $winnersId = DB::table('winners')->get()->pluck('qrdetails_id');   
   dd($winnersId);
}

答案 2 :(得分:0)

我认为你没有在这里利用Laravel的力量。显然,我不知道你要做什么,但这里有一些指示。

你可能应该为Laravel返回集合中的获胜者表现在模型制作the react docs,就像你现在使用的数据库外观一样。现在,Collection类包含许多有用的帮助程序,如model

此时它变得像Winner::all()->pluck('id')一样简单,你得到了一个id的数组。

如果你想让它们以逗号分隔或类似,你可以使用pluck

你会得到Winner::all()->implode('id',',');

答案 3 :(得分:0)

$ qrMainId是一个不是数组的变量。

在每个循环期间在foreach中进行修改。

所以你的代码总是数组的最后一个元素。

使用数组来收集

之类的值
$qrMainId[] = $winner->qrdetails_id;

或sql直接选择你想要的字段。