如果值为true,则应检查复选框

gwa*_*apo 1 php laravel laravel-5 laravel-5.5

这是我的代码.如果值为true,我想显示我的复选框应该检查.但相反,我得到一个错误说:

此集合实例上不存在Property [id]

@foreach($benefits as $benefit)
    <div class="form-check">
        <label class="form-check-label" for="benefit[]">
            <input class="form-check-input" type="checkbox" value="{{$benefit->id}}" id="benefit_id" name="benefit_id[]" @if($benefit->id == $user->benefits->id) checked @endif>{{$benefit->name}}
        </label>
    </div>
@endforeach
Run Code Online (Sandbox Code Playgroud)

Jer*_*dev 5

我想$user->benefits是一个包含多个Benefit对象的集合.您不能只获取集合的属性,您需要检查该集合中的任何对象是否具有id等于当前的属性id.

可能的解决方案是使用containsLaravel集合上的函数.此函数将检查对象是否存在具有特定键的给定值.

@if($user->benefits->contains('id', $benefit->id)) checked @endif
Run Code Online (Sandbox Code Playgroud)

刀片中更好的解决方案是

{{ $user->benefits->contains('id', $benefit->id) ? 'checked' : '' }}
Run Code Online (Sandbox Code Playgroud)