я хочу просмотреть несколько полей ввода в 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
]);
}
}
}
Может кто-нибудь сказать мне, что я делаю неправильно, пожалуйста. заранее спасибо
Да, вы точно поняли, что я имел в виду. Да
Эти входные данные формы будут сгенерированы из кода jQuery. Код jQuery не делает отступ при переполнении стека, я не знаю почему.
Но именно так форма будет генерироваться из кода. Вот почему я поместил это как предположение






Поскольку $presdrug->drugid является строковым типом, вы не можете использовать foreach. Еще одна вещь, вы используете неопределенную переменную $newId. Попробуйте код ниже:
//....
$lastapptid = DB::table('AllDrugPresc')->max('Presc_Num');
foreach($presdrug->drugname as $key => $d){
$newid = $lastapptid + ($key + 1);
//...
Комментарии перемещены в чат ; пожалуйста, не продолжайте обсуждение здесь. Прежде чем публиковать комментарий под этим, пожалуйста, ознакомьтесь с целями комментариев . Комментарии, которые не требуют разъяснений или предложений по улучшению, обычно относятся к ответу , к Meta Stack Overflow или в чату переполнения стека. Комментарии, продолжающие обсуждение, могут быть удалены.
Прежде всего создайте проверенный класс, который будет проверять входные данные, запустив 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);
}
Можете ли вы показать полную форму html? И вы хотите вставить каждое имя с одним и тем же идентификатором в каждую строку базы данных??