将嵌套数组从控制器传递到 laravel 中的视图
Posted
技术标签:
【中文标题】将嵌套数组从控制器传递到 laravel 中的视图【英文标题】:passing nested array from controller to view in laravel 【发布时间】:2017-04-05 17:09:18 【问题描述】:我是 laravel 新手,我试图从 here 解决问题
我有如下控制器:
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
。我的数组如下所示。我在返回语句之前将 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"....
我做错了什么。请帮帮我
【问题讨论】:
你能展示你的模型结构吗?这取决于您的型号。 只包含表名 那么,您的消息来自哪里?如果您的数组中不存在密钥(消息),您希望如何使用此密钥? 它显然来自模型表 是的,没错。根据您的代码,我没有在您的数组中看到消息键。 【参考方案1】:您的$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
【讨论】:
我试过了..它给了Undefined property: Illuminate\Database\Eloquent\Collection::$id
array(1) ["tests"]=> array(2) [0]=> object(Illuminate\Database\Eloquent\Collection)#.... [1]=>....
肯定是id
【参考方案2】:
@foreach($tests as $test)
//$test is an array returned by get query.
@foreach($test as $item)
id : $item->id
@endforeach
@endforeach
获取返回数组,如果要返回一个元素,使用find()或first()。
【讨论】:
它有效,谢谢@Kris Roofe...无论如何,这是传递数据的正确方式,还是我正在转储? 在你的情况下,使用 get() 是更喜欢 first() 和 find() 的正确方法。【参考方案3】:试试这个:
$users = App\User::all()
foreach($users as $user)
$message[] = Model::where('id',$user->id)->get();
$data['tests'] = $message;
return view( 'user.index', compact('data') );
在views/user.index.blade.php中
@foreach($data['tests'] as $test)
id : $test->id
@endforeach
【讨论】:
它给了我undefinde property of $id
以上是关于将嵌套数组从控制器传递到 laravel 中的视图的主要内容,如果未能解决你的问题,请参考以下文章
将 JavaScript 数组从视图传递到 Laravel 控制器
Laravel 5.2 - 如何将变量(数组和整数)从视图传递到控制器?