我有以下数据模式 L
Detalle_Servicio
有很多Material_Usado
而Material_Usado
只属于Detalle_Servicio
当我在Material_Usado中保存值时,应该知道ID Detelle_Servido,但我不能这样做。我有以下代码
路线
Route::post('/upload', function(){
$path = public_path().'/servicios';
try{
$upload_success1 = Input::file('foto1')->move($path,'1');
$upload_success2 = Input::file('foto2')->move($path,'2');
$upload_success3 = Input::file('foto3')->move($path,'3');
$upload_success4 = Input::file('foto4')->move($path,'4');
}catch(Exception $e) {
$e->getMessage();
}
$input = Input::get('json');
$json = json_decode($input);
if($upload_success1 && $upload_success2 && $upload_success3 && $upload_success4) {
//DB::insert("INSERT INTO Detalle_Servicio (RutaFoto1, RutaFoto2, RutaFoto3, RutaFoto4, FechaTermino, Latitud, Longitud, Servicio_idServicio) values(?,?,?,?,?,?,?,?)", array($path.'1', $path.'2', $path.'3', $path.'4',$json->termino, $json->latitud, $json->longitud, $json->idServicio));
$entradas = array(
'RutaFoto1' => $path.'1',
'RutaFoto2' => $path.'2',
'RutaFoto3' => $path.'3',
'RutaFoto4' => $path.'4',
'FechaTermino' => $json->termino,
'Latitud' => $json->latitud,
'Longitud' => $json->longitud,
'Servicio_idServicio' => $json->idServicio
);
Detalle_Servicio::create($entradas);
$array = array('Code' => '202', 'Message' => 'Done');
return Response::json($array);
} else {
$array = array('Code');
return Response::json('error', 400);
}
});
你可以看到我得到一个包含我存储在数据库中的值的JSON
我将数据保存在Detalle_Servicio
表的数据库中,但我需要在Material _Usado
中保存一些数据,但我需要在表Detalle_Servicio
中保存数据时生成的ID 1}}
模型
class Detalle_Servicio extends Eloquent{
protected $table = 'Detalle_Servicio';
protected $primaryKey = 'idDetalle_Servicio';
protected $fillable = array('RutaFoto1', 'RutaFoto2', 'RutaFoto3', 'RutaFoto4', 'FechaTermino', 'Latitud', 'Longitud', 'Servicio_idServicio');
public function servicio(){
return $this->belongsTo('Servicio', 'idServicio'); //le pertenece a
}
public function material_usado(){
return $this->hasMany('Material_Usado', 'idMaterial_Usado');
}
}
和
class Material_Usado extends Eloquent{
protected $table = 'Material_Usado';
protected $primaryKey = 'idMaterial_Usado';
public function detalleServicio(){
return $this->belongsTo('Detalle_Servicio', 'idDetalle_Servicio');
}
}
我该怎么办?
答案 0 :(得分:1)
我真的不明白为什么你在routes.php中有这个功能。除非这只是例如...然后你应该有一个控制器,它将按顺序保存模型。
首先保存第一个模型,然后使用以下内容简单地检索所需的外键:
$serviceDetail = new Detalle_Servicio;
$serviceDetail->rutaFoto1 = Input::get('upload_success1');
etc..
$serviceDetail->save();
if ($serviceDetail->id)
{
$serviceDetail->material_usado()->attach($serviceDetail->id);
}
希望我理解这个问题:)
答案 1 :(得分:1)
使用时:
Detalle_Servicio::create($entradas);
它返回刚刚创建的模型实例,所以你应该这样做:
$Detalle_Servicio = Detalle_Servicio::create($entradas);
现在您可以使用以下方式获取已创建模型的ID:
$Detalle_Servicio->id;
所以,你可以这样做:
if($Detalle_Servicio = Detalle_Servicio::create($entradas)) {
$id = $Detalle_Servicio->id;
// ...
}