将嵌套数组从控制器传递到 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 - 如何将变量(数组和整数)从视图传递到控制器?

将数据从控制器传递到 Laravel 中的视图

如何将数据从控制器传递到 Laravel 中的视图

通过 Laravel 中的 AJAX 发布请求将值从一个视图传递到另一个视图

如何将视图中的数组传递给 ajax 并在 Laravel 5 的控制器中访问?