#php #sql #laravel #laravel-8
Вопрос:
Когда я ввожу данные в свою форму, я настроил ее на ввод только прописных букв, однако при сохранении я вижу, что она сохраняется в БД SQL в нижнем регистре. Есть ли какой-нибудь способ изменить это?
Вот мой код:
контроллер:
public function store(Request $request)
{
$energy = new Energy;
$energy->energyid = $request->input('energyid');
$energy->energydetail = $request->input('energydetail');
$energy->save();
return redirect('/page')->with('success', 'data added');
}
Комментарии:
1. используйте эту функцию php — w3schools.com/php/func_string_strtoupper.asp
2. @Hamelraj, куда бы это все-таки пошло
3.
$energy->energyid = strtoupper($request->input('energyid'));
4. это сработало идеально!! Огромное спасибо!
Ответ №1:
Вы можете использовать проверку, надеюсь, это решит вашу проблему
public function store(Request $request)
{
$validator = Validator::make($request->all(), [
'//your_field' => 'required|string|regex:/(^([A-Z]))/u'
]);
if ($validator->fails()){
return "invalid data";
}
else{
$energy = new Energy;
$energy->energyid = $request->input('energyid');
$energy->energydetail = $request->input('energydetail');
$energy->save();
return redirect('/page')->with('success', 'data added');
}
}
Ответ №2:
Есть несколько способов, с помощью которых вы можете достичь этого, один из них, как упоминал Догго $energy->energyid = strtoupper($request->input('energyid'));
, а другой-создание файла запроса и использование пакета (https://github.com/Waavi/Sanitizer)
вот как будет выглядеть ваш код
class EnergyStoreRequest extends BaseFormRequest
{
/**
* Determine if the user is authorized to make this request.
*
* @return bool
*/
public function authorize()
{
return true;
}
/**
* Get the validation rules that apply to the request.
*
* @return array
*/
public function rules()
{
return [
'energyid' => 'required',
'energydetail' => 'required'
];
}
/**
* Filters to be applied to the input.
*
* @return array
*/
public function filters()
{
return [
'energyid' => 'trim|uppercase',
];
}
}
И ваш контроллер будет выглядеть примерно так
public function store(EnergyStoreRequest $request)
{
$input = $request->validated();
$energy = new Energy;
$energy->energyid = $input['energyid'];
$energy->energydetail = $input['energydetail'];
$energy->save();
return redirect('/page')->with('success', 'data added');
}