未定义的索引:id Laravel 5.8



我的表:

kategoris表

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'));
}

我的视图:

<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。当我尝试使用ddvardump时,显示了结果。我需要循环下拉菜单中的foreach,以显示类别表中的数据列表。我需要加入我的项目表和类别表来获得类别的名称。

您正在从项调用相同的id,而kategoris尝试这样做公共函数编辑($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'));
}

如果这个答案不起作用,显示你的数据库关系,我会给你解决方案

$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']

我解决了这个问题,从项和kategoris表中获取数据时发生了冲突。用数组和对象调用值是有区别的,主要是当它的数据循环时。因此,在控制器中,我必须逐个声明,从kategoris表中选择的值id,我必须连接两个表才能获得kategori的名称,然后我必须再次声明才能获得kategoris数据的列表。因此,有三(3(个变量来声明其中的每一个。很长一段时间以来,我一直在我的控制器中寻找短代码,但我找不到

谢谢你们帮我解决这个问题。干杯

最新更新