我正在学习Laravel。现在我遇到了一个问题,我已经搜索了一个解决方案但尚未找到。 Pluck方法将数据库中的第一个id值作为 0 返回。不应该 1 吗?因此,我不能使用第一个id值(它给出了下面的错误)。
SQLSTATE [23000]:完整性约束违规:1452无法添加或更新子行:外键约束失败
我必须从第二个选择中选择才能发挥作用。我想知道我做错了什么。我正在使用Laravel 5.4。这是代码:
function orders(Request $request) {
$modelesc = $request->modelesc;
$robots = DB::table('robots')->where('Model', $modelesc)->get();
$colours = DB::table('colours')->get()->pluck('Colour');
return view('orders', compact('robots', 'colours'));
}
function storeorders(Request $request) {
order::create($request->all());
}
@foreach($robots as $robot)
{!! Form::open(['method' => 'POST']) !!}
Model: {!! Form::text('Model', $robot->Model) !!}<br><br>
{!! Form::hidden('users_id', Auth::user()->id) !!}
{!! Form::hidden('Fabrication_date', date('Y-m-d')) !!}
Choose colour: {!! Form::select('Colour_id', $colours) !!}<br><br>
{!! Form::hidden('Order_status_id', '1') !!}
{!! Form::submit('Order') !!}
{!! Form::close() !!}
@endforeach
答案 0 :(得分:2)
如果您只指定要拔除的字段名称,则结果将被键控为普通的基于0的数组。为了使结果由数据库中的颜色id键入,您需要将id列指定为pluck()
的第二个参数。
假设您的颜色ID位于Colour_id
列中(基于您的表单),您的代码应如下所示:
$colours = DB::table('colours')->pluck('Colour', 'Colour_id');
注意,我还删除了对get()
的中间调用。虽然它可以双向工作,但不首先执行get()
将使您无法构建所有颜色的集合,然后从集合中进行采集。这节省了一些处理和内存。