首先感谢你看我的问题,很抱歉我的英语很差。
我有两个模型:
下一个关系的用户模型:
public function datosAlumno()
{
return $this->hasOne('sj'Models'DatosAlumno','alumno_id');
}
和DatosAlumno模型:
public function alumno(){
return $this->belongsTo('sj'Models'User','alumno_id');
}
如果我打印dd('Request::all()):
array:16 [▼
"_method" => "PUT"
"_token" => "vnQp4msoo8UHGan5m4v8VYvX1kKYx8HnbhqaywZH"
"rut" => "111111111111"
"nombre" => "AAAAAAAAAA"
"apellido_paterno" => "BBBBBBBBBBB"
"apellido_materno" => "CCCCCCCCCCCC"
"sexo" => "masculino"
"comuna_id" => "13"
"direccion" => "RRRRRRRRRRRRRRRRRRRRRR"
"telefono_fijo" => "14876955"
"telefono_movil" => "3333333333"
"fecha_nacimiento" => "2000-11-03"
"email" => "michelle76@conroy.com"
"datosAlumno" => array:1 [▼
"apoderado_id" => "37"
]
"password" => ""
"password_confirmation" => ""
]
我试图保存或更新"datosAlumno",但当我使用保存,推送或更新字段不改变在数据库
public function update($id)
{
$user = User::with('datosAlumno')->find($id);
$user->fill('Request::all());
$user->push();
}
如果我在dd($user->datosAlumno)
之后填充'Request::all()
,我会得到这个:
DatosAlumno {#297 ▼
#table: "datos_alumno"
#fillable: array:2 [▼
0 => "alumno_id"
1 => "apoderado_id"
]
#connection: null
#primaryKey: "id"
#perPage: 15
+incrementing: true
+timestamps: true
#attributes: array:6 [▼
"id" => 1
"alumno_id" => 97
"apoderado_id" => 15
"deleted_at" => null
"created_at" => "0000-00-00 00:00:00"
"updated_at" => "0000-00-00 00:00:00"
]
#original: array:6 [▼
"id" => 1
"alumno_id" => 97
"apoderado_id" => 15
"deleted_at" => null
"created_at" => "0000-00-00 00:00:00"
"updated_at" => "0000-00-00 00:00:00"
]
#relations: []
#hidden: []
#visible: []
#appends: []
#guarded: array:1 [▶]
#dates: []
#casts: []
#touches: []
#observables: []
#with: []
#morphClass: null
+exists: true
}
在推送到数据库之前,必须将数据设置为DatosAlumno
模型(hasOne
关系)。目前,您只能将数据设置为用户模型。这就行了:
public function update($id)
{
$user = User::with('datosAlumno')->find($id);
$user->fill('Request::all());
$user->datosAlumno->fill('Request::get('datosAlumno'));
$user->push();
}
顺便说一下,总是用英语写函数和变量名是一个很好的做法。通过这种方式,代码更易于阅读和理解,任何人将在你之后工作的这段代码。