【问题标题】:Invalid argument supplied for foreach() in view file视图文件中为 foreach() 提供的参数无效
【发布时间】:2017-09-18 15:27:52
【问题描述】:

我可以知道为什么这段代码显示为 foreach() 提供的参数无效以及我应该如何更正它?

  @foreach($project_details as $project) {

       @foreach($project->projectusers as $users) {
          {{ $user->name }}  
       }
      @endforeach }

  @endforeach

控制器

  public function index()
      {

     $this->project = Project::with('projectusers')->get();      
      return view('projects.index',  [
       'project_details' => $this->project
     ]);

}

【问题讨论】:

  • $project_details$project->projectusers 都不是 foreach() 所期望的数组(或可迭代对象)。
  • 我该如何纠正它?
  • 标准 php 调试 - var_dump() 一切,直到你明白你有什么,你没有什么以及如何使它成为你需要的......
  • 您能否在项目模型中显示您的 projectusers 功能。

标签: php laravel loops foreach


【解决方案1】:

projectusers 是一种关系吗?您是否在 Eloquent 查询中使用 with() 函数来获取集合中的关系?

此外,在您的 foreach 代码中,您使用复数表示用户 ($project->projectusers as $users),然后在双括号中使用单数 {{ $user->name }} 从 foreach 中的用户中删除“s”,它应该可以工作。

【讨论】:

    【解决方案2】:

    我建议多阅读一下 foreach(): http://php.net/manual/en/control-structures.foreach.php

    但如果这是你的全部代码,你还没有设置任何数组值或从数据库或任何东西中分配任何值

    $arr = array(1, 2, 3, 4);
    

    使用上面的网站,您可以看到根据需要添加多少值自己填充数组非常简单。

    【讨论】:

      【解决方案3】:

      只需使用compact 作为view() 的第二个参数

       public function index()
        {
      
       $projects = Project::with('projectusers')->get();
      
        return view('projects.index', compact('projects'));
       }
      

      然后在您的projects.index 中调用:

        @foreach($projects as $project) {
      
             @foreach($project->projectusers as $users) {
                {{ $user->name }}  
             }
            @endforeach }
      @endforeach
      

      【讨论】:

        【解决方案4】:

        试试这个:

         public function index() {
                  $projects = Project::whereHas('user')->get();
                  return view('projects.index', compact('projects''));
        

        在你的刀片中:

        @foreach($projects as $project)
          {{$project->user->name}}
        @endforeach
        

        【讨论】:

          猜你喜欢
          • 2023-04-10
          • 1970-01-01
          • 2011-05-17
          • 2011-02-07
          相关资源
          最近更新 更多