Один запрос обновления столбца не выполняется. добавленные данные не обновляются в базе данных.Обновление laravel db не выполняется
мой взгляд:
<?php echo Form::open(array('url' => 'admin/add-edit-spe')) ;?>
/* form elements */
Admincontroller
public function postAddEditSpe()
{
Input::flash();
$rules = array(
'spe_name' => 'required|unique:spec',
'description' => 'required'
);
$messages = array(
'spe_name.required' => 'Spe name is required',
'spe_name.unique:' => 'Spe name should be unique',
'description.required' => 'Spe description is required',
);
$validator = Validator::make(Input::all(), $rules, $messages);
if ($validator->fails())
{
dd($validator->errors);
/* shows the same page */
}
else{
$data['spe_id']=Input::get('spe_id');
$data['spe_name']=Input::get('spe_name');
$data['spe_content']=Input::get('description');
$data['r_tags']=Input::get('r_tags');
$data['f_spe']=Input::get('f_spe');
$data['r_spe']=implode(",",Input::get('r_id'));
DB::table('spec')->where('spe_id','=',$data['spe_id'])->update(array('spe_name' => $data['spe_name'],'spe_content' => $data['spe_content'],'f_spe' => $data['f_spe'],'related_spe' => $data['r_spe'],'r_tags' => $data['r_tags']));
}
}
ошибка проверки показывает:
Undefined property: Illuminate\Validation\Validator::$errors
выход dd($validator->messages());
является:
object(Illuminate\Support\MessageBag)#895 (2) { ["messages":protected]=> array(1) { ["spe_name"]=> array(1) { [0]=> string(43) "The spe name has already been taken." } } ["format":protected]=> string(8) ":message" }
часть else не выполнена из-за отказа проверки. может ли кто-нибудь сказать мне, что означает эта ошибка проверки? почему это происходит?
Издание я сделал
я переоформлена правила проверки для вставки и обновления, как это:
if(Input::get('speciality_id')!=0){
// Updation
$rules = array(
'speciality_name' => 'required|exists:speciality',
'description' => 'required'
);
}
else{
// Insert
$rules = array(
'speciality_name' => 'required|unique:speciality',
'description' => 'required'
);
}
В этом случае Updation работает, вставка работают. но только один случай не удовлетворяет : «Если db содержит запись с именем« abc »и« xyz », мы будем проверять, являются ли они уникальными при вставке, но если я выберем« xyz »для Edit и измените его имя до «abc» и нажмите «Обновить», произойдет два «abc». Правило «существует» выполнено. Этого сценария не должно быть. Что мне делать, чтобы избежать этого тестового примера.
вы отлаживать, что Laravel получает все необходимое post params из формы? – Serg
@Serg: У меня отмечена отладка в app.php как истина. но на сайте не было обнаружено ошибок. (пожалуйста, простите меня .. я только начал изучать laravel сегодня) – Zammuuz
Можете ли вы опубликовать вывод, когда вы добавляете строку 'dd ($ data)' прямо перед DB :: table ('spec') ...-> update() ? – soulkphp