Загрузка нескольких полей laravel

я хочу просмотреть несколько полей ввода в html-лезвии, чтобы иметь возможность загружать их в мою базу данных с помощью построителя запросов laravel. Но проблема здесь в том, что он говорит мне: «Попытка прочитать свойство «drugid» в строке»

давайте предположим, что это один из входных данных html:

<input type = "text" name = "drugname[]">
<input type = "text" name = "drugname[]">
<input type = "text" name = "drugname[]">

Далее было на моем контроллере, где я зациклил поля, чтобы загрузить их в базу данных.

 public function prescribedrugs(Request $presdrug){
    $validator = Validator::make($presdrug->all(), [
        'consultclinic' => 'required|string',
        'drugdiagnosis' => 'required|string',
        'drugpassword' => 'required|string',
    ]);
    $getuser = new Getloggedinuserservice();
    $getloggedinuser = $getuser->getuser();
    if ($validator->fails()) {
        return response()->json([
        'error' => $validator->errors()->all()
        ]);
    }else{
        
        $lastapptid = DB::table('AllDrugPresc')->max('Presc_Num');
        $newid = $lastapptid + 1;
        foreach($presdrug->drugname as $key => $d){
            return DB::table('AllDrugPresc')
            ->insert([
                'Presc_Num'=>$newid,
                'Date'=>Carbon::now(),
                'Time'=>date('H:i:s'),
                'Drug_Id'=>$presdrug->drugid[$key],
                'Drug_Name'=>$d,
                'Prescription'=>$presdrug->drugprescription[$key],
                'Hospital_No'=>'44455eee',
                'Surname'=>'rrr',
                'Other_Name'=>'rrr',
                'Age'=>44,
                'Sex'=>'ee',
                'Account'=>'ee',
                'Account_Category'=>'ddd',
                'Clinic'=>$presdrug->consultclinic,
                'Diagnosis'=>$presdrug->drugdiagnosis,
                'Prescribed_By'=>'wwwe',
                'Qty_given'=>2,
                'Total_Cost'=>33
            ]);
        }
    }
}

Может кто-нибудь сказать мне, что я делаю неправильно, пожалуйста. заранее спасибо

Можете ли вы показать полную форму html? И вы хотите вставить каждое имя с одним и тем же идентификатором в каждую строку базы данных??

Khang Tran 01.04.2023 05:02

Да, вы точно поняли, что я имел в виду. Да

elo 01.04.2023 05:11

Эти входные данные формы будут сгенерированы из кода jQuery. Код jQuery не делает отступ при переполнении стека, я не знаю почему.

elo 01.04.2023 05:12

Но именно так форма будет генерироваться из кода. Вот почему я поместил это как предположение

elo 01.04.2023 05:13
Стоит ли изучать PHP в 2026-2027 годах?
Стоит ли изучать PHP в 2026-2027 годах?
Привет всем, сегодня я хочу высказать свои соображения по поводу вопроса, который я уже много раз получал в своем сообществе: "Стоит ли изучать PHP в...
Symfony Station Communiqué - 7 июля 2023 г
Symfony Station Communiqué - 7 июля 2023 г
Это коммюнике первоначально появилось на Symfony Station .
Оживление вашего приложения Laravel: Понимание режима обслуживания
Оживление вашего приложения Laravel: Понимание режима обслуживания
Здравствуйте, разработчики! В сегодняшней статье мы рассмотрим важный аспект управления приложениями, который часто упускается из виду в суете...
Установка и настройка Nginx и PHP на Ubuntu-сервере
Установка и настройка Nginx и PHP на Ubuntu-сервере
В этот раз я сделаю руководство по установке и настройке nginx и php на Ubuntu OS.
Коллекции в Laravel более простым способом
Коллекции в Laravel более простым способом
Привет, читатели, сегодня мы узнаем о коллекциях. В Laravel коллекции - это способ манипулировать массивами и играть с массивами данных. Благодаря...
Как установить PHP на Mac
Как установить PHP на Mac
PHP - это популярный язык программирования, который используется для разработки веб-приложений. Если вы используете Mac и хотите разрабатывать...
0
4
71
2
Перейти к ответу Данный вопрос помечен как решенный

Ответы 2

Ответ принят как подходящий

Поскольку $presdrug->drugid является строковым типом, вы не можете использовать foreach. Еще одна вещь, вы используете неопределенную переменную $newId. Попробуйте код ниже:

//....
$lastapptid = DB::table('AllDrugPresc')->max('Presc_Num');

foreach($presdrug->drugname as $key => $d){
    $newid = $lastapptid + ($key + 1);
    
//...

Прежде всего создайте проверенный класс, который будет проверять входные данные, запустив php artisan make: request DrugValidationRequest

class DrugValidationRequest extends FormRequest
{
    public function authorize()
    {
        return true;
    }

    public function rules()
    {
        return [
            'consultclinic' => 'required|string',
            'drugdiagnosis' => 'required|string',
            'drugpassword'  => 'required|string',
        ];
    }

    public function messages()
    {
        return [
            'consultclinic.required' => 'Give your required message',
            'drugdiagnosis.required' => 'Give your required message',
            'drugpassword.required'  => 'Give your required message',
        ];
    }
}

Затем выполните следующий код. Не вставляйте данные с помощью цикла. вместо того, чтобы делать данные в цикле, а затем вставлять напрямую

 public function prescribedrugs(DrugValidationRequest $presdrug)
{
    $getUser         = new Getloggedinuserservice();
    $getLoggedInUser = $getuser->getuser();
    $lastapptid      = DB::table('AllDrugPresc')->max('Presc_Num');
    $newid           = $lastapptid + 1;
    $paramData       = [];

    foreach ($presdrug->drugname as $key => $d) {
        $paramData[] = [
            'Presc_Num'        => $newid,
            'Date'             => Carbon::now(),
            'Time'             => date('H:i:s'),
            'Drug_Id'          => $presdrug->drugid[$key],
            'Drug_Name'        => $d,
            'Prescription'     => $presdrug->drugprescription[$key],
            'Hospital_No'      => '44455eee',
            'Surname'          => 'rrr',
            'Other_Name'       => 'rrr',
            'Age'              => 44,
            'Sex'              => 'ee',
            'Account'          => 'ee',
            'Account_Category' => 'ddd',
            'Clinic'           => $presdrug->consultclinic,
            'Diagnosis'        => $presdrug->drugdiagnosis,
            'Prescribed_By'    => 'wwwe',
            'Qty_given'        => 2,
            'Total_Cost'       => 33
        ];
    }

    return DB::table('AllDrugPresc')->insert($paramData);

}

Также в обработчике также добавьте правило проверки.

 public function render($request, Throwable $e)
{
    if ($e instanceof ValidationException) {
        if ($request->ajax()) {
            return response()->json($e->validator->getMessageBag()->toArray());
        }a
        return redirect()->back()->withErrors($e->validator->getMessageBag()->toArray())->withInput();
    }
 
   throw new \Illuminate\Validation\ValidationException($validator);

}

Другие вопросы по теме