Reputation: 1
i have an error Invalid argument supplied for foreach() laravel 5.2
this is my Controller
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'));
}
and this is my View
@foreach($admission->dossiersocials as $dossiersocial)
<tr>
<td>{{$dossiersocial->id}}</td>
<td>{{$dossiersocial->age}}</td>
<td>{{$dossiersocial->sexe}}</td>
<td>{{$dossiersocial->nationalite}}</td>
@endforeach
Upvotes: 0
Views: 119
Reputation: 421
The argument passed in @foreach should be an instance of Collection Class or an Array.
Now you are passing $admission->dossiersocials which seems like an attribute in $admission instance, which is most likely a string, integer or a boolean value. so this could be the possible reason for the problem.
And if dossiersocials() is an eloquent relation in Admission Model, then please ensure it return an array or collection instance.
furthermore, you can surround the @foreach loop with an @if() statement like this
@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
Hope this will help.
Upvotes: 0
Reputation: 384
@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
Upvotes: 0