2017-10-13 30 views
1

我有一个方法:为什么foreach只能在laravel中打印一个值?

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的另一个值;提前致谢。

+3

您正在覆盖每个'foreach()'循环中'$ qrMainId'的值。如果您想要所有值,则需要将值保存到数组或串联字符串值。 – Sean

回答

1

要获得ID的使用

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

的阵列对于刚刚值使用

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

我只想价值不是一个数组。它会返回数组。 –

+0

当我打印为dd($ qrMainId)时,它返回undefined'$ qrMainId';' –

+0

不允许它返回数组。我想只是这样的价值:https://prnt.sc/gx4exu –

0

如果你想在一个Laravel方式来完成这项任务中使用摘去方法阵图的关键你想要

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

我知道,但它会返回数组。但我想收集价值。 –

+0

你的意思是Laravel系列? – OsDev

+0

是的,我的意思是laravel集合https://prnt.sc/gx4exu –

0

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

您应该为获奖者表制作一个model现在Laravel返回Collections的模型,就像您现在使用的数据库门面一样。现在收集类包含很多有用的帮助者,如pluck

在这一点上,它变得像Winner::all()->pluck('id')一样简单,你得到了一个ID数组。

如果你想获得他们逗号分隔或类似的,你可以使用implode

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

0

$ qrMainId是一个变量不是一个数组东西。

它在每个循环中都被修改为foreach。

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

使用数组来收集值像

$qrMainId[] = $winner->qrdetails_id; 

或SQL直接选择所需的字段。

相关问题