问题描述
$controls_checklists = collect();
foreach($active_evaluation_session->evaluation_items as $evaluation_item) {
$controls_checklists->push(ControlsChecklist::where('macro_process_id',$evaluation_item->macro_process_id)
->where('process_id','like',$evaluation_item->process_id ? $evaluation_item->process_id : '%')
->where('status',1)->get());
}
$controls_checklists->all();
return view('auto-evaluations.index',compact('controls_checklists'));
在我看来,我有:
@foreach ($controls_checklists as $controls_checklist)
<tr data-entry-id="{{ $controls_checklist->id }}">
<td></td>
<td>{{ $controls_checklist->control->control_reference }}</td>
<td>{{ $controls_checklist->macro_process->name }}</td>
<td>{{ $controls_checklist->process->name }}</td>
<td>{{ isset($controls_checklist->sub_process->name)? $controls_checklist->sub_process->name: '' }}</td>
<td>{{ isset($controls_checklist->activity->name)? $controls_checklist->activity->name: '' }}</td>
<td>{{ $controls_checklist->checkpoint }}</td>
<td>
@if($controls_checklist->status == 1) {{ 'Active' }} @else {{ 'In Active' }} @endif
</td>
<td>
<a href="{{ route('controls-checklists.edit',[$controls_checklist->id]) }}" class="btn btn-xs btn-info">@lang('global.app_evaluate')</a>
</td>
</tr>
@endforeach
Property [id] does not exist on this collection instance. (View: /opt/lampp/htdocs/controls-assessment/resources/views/auto-evaluations/index.blade.PHP)
对于这一行
<tr data-entry-id="{{ $controls_checklist->id }}">
我认为由于我尝试合并上面的集合查询的方式,这不起作用。我该如何解决这个问题?
解决方法
您说得对,push()
不是将两个集合附加在一起的方式,而是使用 concat()
。
对于您的代码,将 push()
替换为 concat()
并将结果分配给相同的变量。
$controls_checklists = $controls_checklists->concat(
ControlsChecklist::where('macro_process_id',$evaluation_item->macro_process_id)
->where('process_id','like',$evaluation_item->process_id ? $evaluation_item->process_id : '%')
->where('status',1)
->get()
);
,
首先 dd($controls_checklist);
并验证在 $controls_checklist->id
的位置确实存在 id。如果不改变foreach循环语句。
来到foreach循环,尝试使用join或innerjoin的模型来管理查询结果
谢谢
,循环不会成功,因为您的变量返回的是集合的集合。
如果你愿意,你可以试试这个。
foreach($active_evaluation_session->evaluation_items as $evaluation_item) {
$controlsChecklist = ControlsChecklist::where('macro_process_id',$evaluation_item->macro_process_id)
->where('process_id',$evaluation_item->process_id ? $evaluation_item->process_id : '%')
->where('status',1)->get();
foreach ($controlsChecklist as $value) {
$controls_checklists->push($value);
}
}
,
您不必在新的集合变量中收集数据。
试试这个:
$query = ControlsChecklist::query();
foreach($active_evaluation_session->evaluation_items as $evaluation_item) {
$query->where('macro_process_id',1);
}
return $query->get();