Неопределенный индекс: id Laravel 5.8 - PullRequest
0 голосов
/ 09 июля 2020

Мои таблицы:

kategoris table

id | kode_kategori | kategori_name |

таблица товаров

id | kategori_id | имя_элемента

В таблице элементов столбец kategori_id имеет внешний ключ.

Мой контроллер:

 public function edit($id)
  {   
    
    // $item = Item::findOrFail($id);
    $item   = DB::table('items')
                ->join('kategoris', 'items.kategori_id', '=', 'kategoris.id')
                ->where('items.id', '=', $id)
                ->select('items.*', 'kategoris.*', 'items.id', 'items.kategori_id')
                ->get();

    // dd($item);

    return view('master-dev/item/edit', compact('item'));

  }

My View :

<div class="card card-default">
            {{ Form::model($item,['route'=>['item.update',$item['id']], 'files'=>true,'method'=>'PUT']) }}
          <div class="card-header">
            <h3 class="card-title"><b>Edit Data Item</b></h3>
            <div class="card-tools">
            <button type="button" class="btn btn-tool" data-card-widget="collapse"><i class="fas fa-minus"></i></button>
            </div>
          </div>
          <!-- /.card-header -->
          <div class="card-body">
            @if(!empty($errors->all()))
          <div class="alert alert-danger">
            {{ Html::ul($errors->all())}}
          </div>
            @endif
            <div class="row">
            <div class="col-md-6">
             <div class="form-group">
              {{ Form::label('kode_kategori', 'Kode Kategori') }}
              <select name="kode_kategori" id="kode_kategori" class="form-control">
              @foreach ($item as $i)
              <option valu="{{ $i['kode_kategori'] }}">{{ $i['kode_kategori'] }}</option>
              @endforeach
              </select>
            </div>
            </div>
               ..........
               ..........
            {{ Form::close() }}

Я пробовал любые решения в stackoverflow, такие как добавление (ifempty ...) и другие решения, но все же результат Undefined index: id в моем клинке редактирования. Когда я пытался использовать dd и vardump, результаты были показаны. Мне нужно l oop the foreach в раскрывающемся меню, чтобы отобразить список данных из моей таблицы категорий. И мне нужно соединить мою таблицу элементов и таблицу категорий, чтобы получить названия категорий.

Ответы [ 3 ]

0 голосов
/ 09 июля 2020

$item = ....->get() вернет Коллекцию , чтобы иметь только один элемент, который вам нужно использовать $item = ....->first() вместо

Но поскольку у вас есть @foreach ($item as $i), я считаю, вы все равно хотите иметь коллекция, но в этом случае ваша проблема здесь

{{ Form::model($item,['route'=>['item.update',$item['id']], 'files'=>true,'method'=>'PUT']) }}

Поскольку у вас есть коллекция, мы не знаем, к какому $item['id'] она относится. Возможно $item->first()['id']?

0 голосов
/ 10 июля 2020

Проблему решил, есть конфликт при загрузке данных из таблиц items и kategoris. Существуют различия в вызове значения с помощью массива и объекта, в основном, если его данные зацикливаются. Итак, в контроллере я должен объявить один за другим выбранный идентификатор значения из таблицы kategoris, и мне нужно объединить обе таблицы, чтобы получить имя kategoris, а затем я должен объявить еще раз, чтобы получить список данных kategoris . Итак, есть три (3) переменных для объявления каждой из них. В течение этого долгого времени я искал короткий код в своем контроллере, но не смог его найти.

Спасибо за всех, что помогли мне с этой проблемой. Ура.

0 голосов
/ 09 июля 2020

вы вызываете тот же идентификатор из элементов и категорий, попробуйте этот publi c редактирование функции ($ id) {

    // $item = Item::findOrFail($id);
    $item   = DB::table('items')
                ->join('kategoris', 'items.kategori_id', '=', 'kategoris.id')
                ->where('items.id', '=', $id)
                ->select('items.*', 'kategoris.id as kategory_id', 'kategoris.kode_kategori', 'kategoris.kategori_name')
                ->get();

    // dd($item);

    return view('master-dev/item/edit', compact('item'));

  }

если этот ответ не работает, покажите отношение вашей базы данных, я дам вам решение

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...