我正试图将从数据库中提取的选定值加载到select2中。
id值保存在json字段中,该字段包含id值或我管理为“all”的字段'*'。
这是我的控制器方法:

$data['field_id'] = array();
$field_id_array = json_decode(User::find($id) -> field_id);
if( $field_id_array !== null ) {
    $field_array = Campo::whereIn('id',$field_id_array)->pluck('field_name','id');
    if( in_array( '*' , $field_id_array ) ) {
        $field_array -> prepend( 'All' , '*' );
    }
    $data['field_id'] = $field_array;
}
return view('create', $data);

这是我的观点,我在用刀片:
<select id="field_id" name="field_id[]" multiple>
    @if(!empty($field_id))
        @foreach($field_id as $f)
            <option value = "{!! $f->id !!}" selected >{!! $f->field_name !!}
            </option>
        @endforeach
    @endif
</select>

显示的错误是:
试图获取非对象的属性
如果我只在视图循环中使用{!! $c !!},我没有错,但它只显示字段field_name
我在ajax搜索中使用select2,但是我没有发布代码,因为我认为控制器的方法中的错误是99.9%。
有人有办法解决这个问题吗?

最佳答案

Collection::pluck方法在您的情况下返回一个关联数组,而不是一个对象数组,因此您的循环应该如下所示:

@foreach($field_id as $id => $field_name)
    <option value = "{{ $id }}" selected >{{ $field_name }}</option>
@endforeach

10-07 12:05
查看更多