2016-11-22 84 views
4

我是新來laravel,我試圖從明確的問題 here通過嵌套陣列控制器與查看laravel

我控制器類似如下:

foreach($users as $user){ 
    $message[] = Model::where('id',$user->id)->get(); 
} 
$data['tests'] = $message; 
return View::make('user.index', $data); 

我的看法是:

@foreach($tests['message'] as $test) 
    id : {{$test->id}} 
@endforeach 

這給了我Undefined index: message

我已經在控制器中轉儲了$data。我的數組如下所示。在return語句之前,我將var_dump放置在控制器中。我的var_dump($data)顯示:

array(1) { 
     ["tests"] => array(2) { 
      [0] => object(Illuminate\ Database\ Eloquent\ Collection) #515 (1) { ["items":protected]= > array(2) { 
       [0] => ["attributes": protected] => array(14) { 
        ["id"] => string(3) "12".... 

     } 
    } 
      [1] => object(Illuminate\ Database\ Eloquent\ Collection) #515 (1) { ["items":protected]= > array(2) { 
       [0] => ["attributes": protected] => array(14) { 
        ["id"] => string(3) "12".... 

     } 
    } 
    } 

我做錯了什麼。請幫助我

+0

你能證明你的模型結構?這取決於你的模型。 –

+0

它只包含表名 – m2j

+0

那麼,你的消息來自何處?如果你的數組中不存在key(消息),你想如何使用這個鍵? –

回答

4
@foreach($tests as $test) 
//$test is an array returned by get query. 
    @foreach($test as $item) 
    id : {{$item->id}} 
    @endforeach 
@endforeach 

獲取返回數組,如果你想返回一個元素,使用查找()或第()。

+0

它的工作原理,謝謝@Kris Roofe ......無論如何,它是傳遞數據的正確方式,還是我正在做轉儲? – m2j

+0

在你的情況下,使用get()是偏好first()和find()的正確方法。 –

+0

我會努力的。感謝agin的努力 – m2j

2

您的$tests['message']應該是$tests,因爲您尚未在控制器中定義消息。

$message = array(); 
foreach($users as $user){ 
    $message[] = Model::where('id',$user->id)->get(); 
} 
$data['tests'] = $message; 
return View::make('user.index', $data); 

查看

@foreach($tests as $test) 
    id : {{$test->id}} 
@endforeach 
+0

我試過了..它提供了'未定義的屬性:Illuminate \ Database \ Eloquent \ Collection :: $ id' – m2j

+0

'print_R($ tests)'並且顯示給我.. –

+0

'array(1){[「tests」] =>數組(2){[0] =>對象(Illuminate \ Database \ Eloquent \ Collection)#.... [1] => .... – m2j

2

試試這個:

$users = App\User::all() 
foreach($users as $user){ 
    $message[] = Model::where('id',$user->id)->get(); 
} 
$data['tests'] = $message; 
return view('user.index', compact('data')); 

在視圖/ user.index.blade.php

@foreach($data['tests'] as $test) 
    id : {{$test->id}} 
@endforeach 
+0

它給了我$ undefinde $ id的財產 – m2j

+0

無論如何,謝謝@Kabelo Tooka – m2j