【发布时间】:2017-09-25 20:27:39
【问题描述】:
我在 Laravel 中实现了bootstrap multi select list,我有一个查询将选定的项目插入数据库,但我的查询只插入 id 编号最低的项目。因此,如果我选择 ID 号为 2 3 4 的员工,则将始终插入 ID 2,其余部分将被忽略。
想象一下我的网络应用会做什么:我有一个汽车维修站,每个维修站都有自己的id。创建新修复时,我首先创建修复实例,然后得到它的 id,然后将其插入到表 repair_employees 中,列如下:“worker_id”“repair_id”。
假设我有id = 87 的新修复。
我从 ID 为2、3、4 的多选列表中选择工人。
因此,通过正确的 sql 插入,表格将如下所示:
"repair_id" , "worker_id"
"87" , "2"
"87" , "3"
"87" , "4"
这是我的插入代码:
public function addRepairWorker(Request $request , Vehicle $vehicle, $idcko){
$workers_needed = null;
DB::transaction(function () use ($request, $vehicle, $idcko) {
Log::info('Creating new repair worker instance.');
$workers_needed = new Repair_worker();
$workers_needed->repair_id = $idcko;
$workers_needed->worker_id = $request->worker_id;
DB::insert('insert into repair_worker (repair_id, worker_id) values (?, ?)',
[$workers_needed->repair_id, $workers_needed->worker_id]);
Log::info('Repair created.');
flash('Repair successfully added.', 'success');
});
}
这里(如果需要)是我对多选列表的看法(form.blade.php):
<select multiple class="form-control" name="worker_id">
@foreach($workers as $worker)
<option value="{{ $worker->id }}"
@if(isset($repair_worker) &&
($worker->id == $worker_id))
selected @endif)>
{{ $worker->name }} {{$worker->surname}}
</option>
@endforeach
</select>
我需要更改什么来插入所有“工人”?
编辑:
这是我的控制器中的函数,我必须在哪里有一个循环来获取所有数组值?应该循环哪个部分来完成它有点令人困惑。
public function addRepair(Request $request, Customer $customer, Vehicle $vehicle)
{
$workers = DB::select(DB::raw('select workers.id as id, workers.name as name, workers.surname as surname from workers order by name'));
if ($request->isMethod('post')) {
$this->validate($request, [
'worker_id' => 'required'
//'part_id' => 'required'
]);
$this->repairsService->createRepair($request, $vehicle);
foreach ($workers_id as $id){
$this->repairsService->addRepairWorker($request, $vehicle); //this function does the insert into database
}
return redirect()->route('Customers:detailVehicle', ['customer' => $customer, 'vehicle' => $vehicle]);
}
return view('repairs.form', ['repair' => null, 'workers' => $workers]);
}
【问题讨论】:
标签: php sql postgresql laravel