遍历包含另一个数组集合的数组

时间:2019-07-20 19:31:12

标签: php laravel

我试图获取date和courseName的值,但我却遇到了这些错误异常。

循环

array:2 [▼
 0 => Collection {#284 ▼
#items: array:3 [▼
  0 => {#277 ▼
    +"date": "2018"
  }
  1 => {#279 ▶}
  4 => {#282 ▶}``
 ]
 }
 1 => Collection {#283 ▼
  #items: array:2 [▼
   0 => {#280 ▼
     +"id": 1
     +"courseName": "newc1"
     }
  1 => {#271 ▶}
  ]
  }
  ]


 //tried these
  @foreach ($result as $key=> $value)
                    @foreach ($value as $val)
                        {{$val->date}}

                    @endforeach

                @endforeach 

      //controller
        $data = array();
        $date = db::table('students')->select('date')->get()->unique();
        $course = db::table('courses')->select('id', 'courseName')->get();
        array_push($data, $date, $course);

需要遍历这些。相反得到 ErrorException(E_ERROR) 未定义的属性:stdClass :: $ date

2 个答案:

答案 0 :(得分:0)

如果日期尚可,则必须控制数据库结果,还需要为laravel选择distinct(),并且必须在其末尾获取

    //This
    $date = db::table('students')->select('date')->get()->unique();
    //To This
    $date = db::table('students')->select('date')->distinct()->get();

    if(!$date)
      return $this->response;
      //or
      return false;

//更新

$course = DB::table('students')
            ->select('id','courseName', 'courses')
            ->groupBy('courses')//What ever you want to uniqe
            ->get();

对于退货视图示例,您必须自己更改

return $this->responseWithView("index //PAGE","success", ['courses' => $course,'anything' => $youwant]);

答案 1 :(得分:0)

我不太确定将这些集合放在一个数组中要完成的工作,但这是解决问题的一种方法:

我注意到您正在将具有不同属性的集合插入数组。

$date = db::table('students')->select('date')->get()->unique();

因此每个项目都将具有date属性

在下一个查询中,选择不同的列:

$course = db::table('courses')->select('id', 'courseName')->get();

此处每个项目将具有idcourseName属性

如您所见,您在同一阵列中持有不同的物品。 因此,您需要检查date属性是否存在。

@foreach ($result as $key=> $value)
    @foreach ($value as $val)

        @if(isset($val->date))
            {{$val->date}}
        @endif

    @endforeach
@endforeach