2017-04-07 36 views
2

我想從我的用戶表中檢索所有非管理員用戶。 像這樣laravel |雄辯的foreach不起作用

$agents = User::where('is_admin','=', 'false')->get(); 

//didn't work 
foreach ($agents as $agent=>$value) 
{ 
    echo "{$agent}=>{$value}"."<br>"; 
} 

//tried dumping 
dd($agents); 

,但它沒有工作,所以我嘗試傾銷變量來檢查它是否有任何結果,我有一個非管理員截至目前:這裏是輸出

Collection {#219 ▼ 
#items: array:1 [▼ 
    0 => User {#222 ▼ 
     #casts: array:1 [▶] 
     #fillable: array:6 [▶] 
     #hidden: array:2 [▶] 
     #connection: null 
     #table: null 
     #primaryKey: "id" 
     #keyType: "int" 
     +incrementing: true 
     #with: [] 
     #perPage: 15 
     +exists: true 
     +wasRecentlyCreated: false 
     #attributes: array:10 [▶] 
     #original: array:10 [▶] 
     #dates: [] 
     #dateFormat: null 
     #appends: [] 
     #events: [] 
     #observables: [] 
     #relations: [] 
     #touches: [] 
     +timestamps: true 
     #visible: [] 
     #guarded: array:1 [▶] 
     #rememberTokenName: "remember_token" 
    } 
    ] 
} 

請幫助

+0

要打印出來......你在這裏返回集合做什麼....多少非管理員用戶你有沒有在你的桌子上?而且你不能回顯集合,回聲只用於簡單的東西,字符串和整數等 – lewis4u

+0

@ lewis4u我想要了解所有非管理員的詳細信息。我目前有一個非管理員,但這個數字會增長。我想用foreach打印它們 –

回答

3
$agents = User::where('is_admin','=', 'false')->pluck('value', 'agent'); 

foreach ($agents as $agent=>$value) { 
echo "{$agent}=>{$value}"."<br>"; 
} 

使用動物內臟,您將對象轉換爲一個數組,這樣你就可以使用foreach要與key => value的方式。

如果您需要訪問模型的其他屬性,你需要做這樣的事情:

$agents = User::where('is_admin','=', 'false')->get(); 

foreach ($agents as $agent) { 
echo "{$agent->id}=>{$agent->name}"."<br>"; 
} 

這樣,你只需要使用$agent->其次是你想要的屬性。

+0

使用pluck將返回一個集合,而不是數組。 (從Laravel版本5.3 ^) – lewis4u

+0

@ lewis4u它將返回一個數組而不是集合與對象的集合。 –

+0

@BigBoss你的方法雖然工作,但我必須專門在採摘內傳遞字段名稱。反正有沒有在採摘中指定它們而採集所有字段? –

1

你的控制器應該是這樣的:

public function index() { 

    $agents = User::where('is_admin','=', 'false')->get(); 
    return view('viewfile', compact('agents')); 
} 

然後在視圖文件使刀片鑑於foreach循環

@foreach ($agents as $agent) 
    {{ $agent->name }} 
@endforeach 
+0

刀片在控制器中工作嗎? –

+0

我試圖通過該變量後,我確認它打印爲打算在我的控制器打印(這是使用foreach) –

+0

Yup會嘗試,我只是試圖確保我有正確的數據之前,我把它傳遞給我視圖。我想知道爲什麼它不能在控制器中工作? –

0

這裏$agentsStd Class object array。所以訪問它的元素試試這個:

foreach ($agents as $agent) 
{ 
    $agent->name; 
} 
0

試試這個代碼呼應所有非管理員的信息:

$agents = User::where('is_admin','=', 'false')->get(); 

foreach ($agents as $agent) 
{ 
    foreach($agent as $property => $value) { 
     echo "{$property} => {$value}"."<br>"; 
    } 
    echo "<br/>----------------------<br/>"; 
}