gpt4 book ai didi

php - 使用数组更新 Laravel Eloquent ORM

转载 作者:行者123 更新时间:2023-12-04 04:32:07 25 4
gpt4 key购买 nike

我试图弄清楚如何从数组中更新和 Eloquent ORM 模式。而不是逐场进行。这就是我到目前为止所拥有的。

public static function updatePatient($id){
$patient_payload = Input::all(); // eg. array('patient_first_name'=>'Test', 'patient_last_name'=>'TEST')
$patient_to_update = Patient::find($id);

/*
|--------------------------------------------------------------------------
| Validate the request
|--------------------------------------------------------------------------
*/
if(!$patient_to_update)
return Response::json(array('error'=>'No patient found for id given'), 400);

/*
|--------------------------------------------------------------------------
| Update the patient entry.
|--------------------------------------------------------------------------
*/


$patient_to_update->update($patient_payload);
$patient_to_update->save();

return Response::json(array('success'=>'Patient was updated'));
}

这会引发一个 Laravel 模型错误,只是说:'patient_first_name' 是的,patient_first_name 是数据库上的一个列。作为一种解决方法,我一直在这样做,这很有效。
public static function updatePatient($id){
$patient_payload = Input::all();
$patient_to_update = Patient::find($id);

/*
|--------------------------------------------------------------------------
| Validate the request
|--------------------------------------------------------------------------
*/
if(!$patient_to_update)
return Response::json(array('error'=>'No patient found for id given'), 400);

/*
|--------------------------------------------------------------------------
| Update the patient entry.
|--------------------------------------------------------------------------
*/


DB::table('patients')
->where('id',$id)
->update($patient_payload);

//update laravel timestamps
$patient_to_update->touch();
return Response::json(array('success'=>'Patient was updated'));
}

最佳答案

由于您要做的是批量分配,因此我建议您检查是否已定义 $fillable您的属性(property)Patient型号:

class Patient extends Eloquent {

protected $fillable = array('patient_payload');

}

作为一项安全措施,Eloquent 不允许您通过质量分配修改任何模型的属性,除非您指定 $fillable (允许属性的白名单)或 $guarded (禁止属性的黑名单)。

进一步阅读:
  • http://en.wikipedia.org/wiki/Mass_assignment_vulnerability
  • 关于php - 使用数组更新 Laravel Eloquent ORM,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20428771/

    25 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com