Сохранение данных в верхнем регистре с помощью laravel

#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');
    }