У меня ошибка:

"Попытка получить свойство 'id' не-объекта (Просмотр: C:
xampp \ htdocs \ klikdesaku \ resources \ views \ admin \ posts \ create.blade.php) "

Я использовал его без коллективной формы laravel (я не знаю его имени)

Пример: {{!! Form::select() !!}}

Это мой код:

< Сильный > create.blade.php

@foreach ($categories as $category )
   <option value="{{$category->id}}">{{$category->name}}</option>

PostController.php

public function create(){
        $this->authorize('create', Post::class);
        $categories = Category::pluck('name','id')->all();
        return view ('admin.posts.create', ['categories'=>$categories]);
    }

public function store(){
        $this->authorize('create', Post::class);
        $inputs = request()->validate([
            'title'=>'required',
            'post_image'=>'file', //mime: jpeg, png
            'body'=>'required',
            'category_id'=> 'required'
        ]);
        if(request('post_image')){
            $inputs['post_image'] = request('post_image')->store('images');
        }
        auth()->user()->posts()->create($inputs);
        session()->flash('post-create-message', 'Post was Created ' . $inputs['title']);
        return redirect()->route('post.index');
0
Mahardika Widya Kurniawan 24 Фев 2021 в 10:06

2 ответа

Лучший ответ

При вызове pluck вы извлекаете столбец «имя», а затем индексируете это значение по ключу, в данном случае «id» (второй аргумент). При вызове all возвращаемой коллекции вы получаете соответствующий ассоциативный массив. Итак, ваше поле 'id' является ключом, а категория 'name' - значением:

@foreach ($categories as $id => $name)
   <option value="{{ $id }}">{{ $name }}</option>
@endforeach

Даже если вы не позвонили all и у вас есть Коллекция от pluck, это все равно будет работать.

Документы Laravel 8.x - База данных - Конструктор запросов - Получение списка значений столбцов pluck

Документы Laravel 8.x - Коллекции - Доступные методы - all

1
lagbox 24 Фев 2021 в 07:36
  public function create(){

        $this->authorize('create', Post::class);
        $categories = Category::->all(['name','id']);
        return view ('admin.posts.create')->with(['categories'=>$categories])
        
}
0
DOLWIN DAVIS 24 Фев 2021 в 07:19