2016-11-22 50 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