【问题标题】:passing nested array from controller to view in laravel将嵌套数组从控制器传递到 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"....

        }
    }
    }

我做错了什么。请帮帮我

【问题讨论】:

  • 你能展示你的模型结构吗?这取决于您的型号。
  • 只包含表名
  • 那么,您的消息来自哪里?如果您的数组中不存在密钥(消息),您希望如何使用此密钥?
  • 它显然来自模型表
  • 是的,没错。根据您的代码,我没有在您的数组中看到消息键。

标签: php arrays laravel foreach


【解决方案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
猜你喜欢
  • 2016-01-30
  • 2018-06-11
  • 2017-05-25
  • 2016-01-21
  • 1970-01-01
  • 2017-01-29
  • 2015-07-25
  • 2014-12-02
相关资源
最近更新 更多