我尝试更新两个表Meter和InstallationOrder,编辑方法接收安装订单的 ID,我应该用它来获取仪表编号,实际上如果我这样做dd($meterid); 显示数字,但是当我尝试使用传递 id 的 find 方法获取Meter时,出现以下错误。
[2017-05-24 17:47:56] local.INFO:已安装命令 [2017-05-24 17:47:56] local.CRITICAL:错误 apiControllerr 0 | /Applications/MAMP/htdocs/juntaAgua/vendor/laravel/framework/src/Illuminate/Support/helpers.php |类 Illuminate\Database\Query\Builder 的对象无法转换为字符串
控制器
public function edit($id)
{
$idmedidor = DB::table('Medidor')
->select(
'Medidor.idmedidor')
->join('orden_instalacion', 'Medidor.orden_instalacion_idorden_instalacion', '=',
'orden_instalacion.idorden_instalacion')
->where('orden_instalacion.idorden_instalacion', '=', $id)->get();
try {
DB::beginTransaction();
$orden = OrdenInstalacion::find($id);
$orden->estado = 1;
$orden->fecha_instalacion = Carbon::now();
$orden->update();
Log::info("Orden instalada");
$medidor = Medidor::find($idmedidor);
$medidor->fecha_instalacion = Carbon::now();
$medidor->estado = 1;
$medidor->update();
Log::info("medidor instalado");
DB::commit();
} catch (\Exception $e) {
Log::critical("Error apiControllerr {$e->getCode()} | {$e->getFile()} |{$e->getMessage()} ");
DB::rollback();
}
return redirect::to('api');
}
考虑到您只查找一条记录,您应该使用该方法
first()
而不是get()
获取相应的属性或字段,在这种情况下idmedidor
: