【问题标题】:Invalid argument supplied for foreach() laravel 5.2为 foreach() laravel 5.2 提供的参数无效
【发布时间】:2018-12-25 08:59:18
【问题描述】:

我有一个错误为 foreach() laravel 5.2 提供的参数无效

这是我的控制器

public function cassocialshow(Request $request, $id)
{
    if(!in_array(\Auth::user()->role, ['validation','guichet'])) return redirect()->back();
    $admission = Admission::findOrFail($id);
    //dd($admission);

    return view('admissions.cassocialshow', compact('admission'));
}

这是我的观点

 @foreach($admission->dossiersocials as $dossiersocial)
                        <tr>
                            <td>{{$dossiersocial->id}}</td>

                <td>{{$dossiersocial->age}}</td>
                <td>{{$dossiersocial->sexe}}</td>
                <td>{{$dossiersocial->nationalite}}</td>

@endforeach

【问题讨论】:

  • 你可以在这里发布 dd($admission->dossiersocials) 结果吗?

标签: laravel


【解决方案1】:
@if(isset($admission->dossiersocials))
@foreach($admission->dossiersocials as $dossiersocial)
                        <tr>
                            <td>{{$dossiersocial->id}}</td>

                <td>{{$dossiersocial->age}}</td>
                <td>{{$dossiersocial->sexe}}</td>
                <td>{{$dossiersocial->nationalite}}</td>
@endforeach
@endif

【讨论】:

    【解决方案2】:

    @foreach 中传递的参数应该是 Collection Class 或 Array 的实例。

    现在你正在传递 $admission->dossiersocials,它看起来像是 $admission 实例中的一个属性,它很可能是一个字符串、整数或布尔值。 所以这可能是问题的可能原因。

    如果 dossiersocials() 在 Admission Model 中是一个 eloquent 关系,那么请确保它返回一个数组或集合实例。

    此外,您可以使用这样的@if() 语句围绕@foreach 循环

    @if(!empty($admission->dossiersocials) && (is_array($admission->dossiersocials) || $admission->dossiersocials instanceof \Illuminate\Support\Collection))
        @foreach($admission->dossiersocials as $dossiersocial)
            // Put you code here
        @endforeach
    @endif
    

    希望这会有所帮助。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2017-02-15
      • 2016-10-09
      • 2018-12-09
      • 1970-01-01
      • 2015-06-29
      • 2022-01-27
      • 2018-02-26
      相关资源
      最近更新 更多