2017-10-13 111 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直接選擇所需的字段。

相關問題