ایجاد داینامیک و ذخیره آن
https://lamtakam.com/qanda/3411/ایجاد-داینامیک-و-ذخیره-آن 0من یه فرمی دارم شبیه زیر مثل رزومه ساز
میخوام بدونم که نحوه ذخیره کردن آن به چه شکلی است یعنی اضفه بشه یا اپدیت؟ من از هر چیز بگی استفاده کردم اما موفق نشدم ممثل firstOrNew
و firstOrCreate و update و..........
روش اول کد
foreach ($request->field as $key => $value) {
$educational = Educational::firstOrNew(['user_id' => auth()->id()]);
$educational->user_id = auth()->id();
$educational->grade_id = $request->grade_id[$key];
$educational->field = $request->field[$key];
$educational->institution_id = $request->institution_id[$key];
$educational->branch = $request->branch[$key];
$educational->institution_education = $request->institution_education[$key];
$educational->gpa = $request->gpa[$key];
$educational->nation_id = $request->nation_id[$key];
$educational->province_id = $request->province_id[$key];
$educational->town_id = $request->town_id[$key];
$educational->province_name = $request->province_name[$key];
$educational->town_name = $request->town_name[$key];
$educational->entrance = $request->entrance[$key];
$educational->graduate = $request->graduate[$key];
$educational->currently_studying = $request->has("currently_studying.$key");
$educational->save();
}
روش دوم
foreach ($request->field as $key => $value) {
try {
$educational = new Educational;
$educational->user_id = auth()->id();
$educational->grade_id = $request->grade_id[$key];
$educational->field = $request->field[$key];
$educational->institution_id = $request->institution_id[$key];
$educational->branch = $request->branch[$key];
$educational->institution_education = $request->institution_education[$key];
$educational->gpa = $request->gpa[$key];
$educational->nation_id = $request->nation_id[$key];
$educational->province_id = $request->province_id[$key];
$educational->town_id = $request->town_id[$key];
$educational->province_name = $request->province_name[$key];
$educational->town_name = $request->town_name[$key];
$educational->entrance = $request->entrance[$key];
$educational->graduate = $request->graduate[$key];
$educational->currently_studying = $request->has("currently_studying.$key");
$educational->save();
} catch (Exception $e) {
dd($e->getMessage());
}
}
روش سوم
foreach ($request->field as $key => $value) {
Educational::firstOrCreate([
'user_id' => auth()->id(),
'grade_id' => $request->grade_id[$key],
'field' => $request->field[$key],
'institution_id' => $request->institution_id[$key],
'branch' => $request->branch[$key],
'institution_education' => $request->institution_education[$key],
'gpa' => $request->gpa[$key],
'nation_id' => $request->nation_id[$key],
'province_id' => $request->province_id[$key],
'town_id' => $request->town_id[$key],
'province_name' => $request->province_name[$key],
'town_name' => $request->town_name[$key],
'entrance' => $request->entrance[$key],
'graduate' => $request->graduate[$key],
'currently_studying' => $request->has("currently_studying.$key"),
]);
}
روش چهارم
foreach ($request->field as $key => $value) {
try {
$educational = Educational::firstOrCreate(['user_id' => auth()->id()]);
$educational->user_id = auth()->id();
$educational->grade_id = $request->grade_id[$key];
$educational->field = $request->field[$key];
$educational->institution_id = $request->institution_id[$key];
$educational->branch = $request->branch[$key];
$educational->institution_education = $request->institution_education[$key];
$educational->gpa = $request->gpa[$key];
$educational->nation_id = $request->nation_id[$key];
$educational->province_id = $request->province_id[$key];
$educational->town_id = $request->town_id[$key];
$educational->province_name = $request->province_name[$key];
$educational->town_name = $request->town_name[$key];
$educational->entrance = $request->entrance[$key];
$educational->graduate = $request->graduate[$key];
$educational->currently_studying = $request->has("currently_studying.$key");
$educational->save();
} catch (Exception $e) {
dd($e->getMessage());
}
}
روش پنجم
public function update(Request $request) {
$user = auth()->user();
$user->image = $path;
$user->first_name = $request->first_name;
$user->last_name = $request->last_name;
$user->job_title = $request->job_title;
$user->gender = $request->gender;
$user->marital = $request->marital;
$user->soldier_id = $request->soldier_id;
$user->birth_date_day = $request->birth_date_day;
$user->month_id = $request->month_id;
$user->birth_date_year = $request->birth_date_year;
$user->email = $request->email;
$user->mobile = $request->mobile;
$user->telephone = $request->telephone;
$user->website = $request->website;
$user->save();
foreach ($request->field as $key => $value) {
if ($user->where('user_id', auth()->id())) {
$educational = $user->findOrFail('user_id');
} else {
$educational = new Educational;
}
$educational->user_id = auth()->id();
$educational->grade_id = $request->grade_id[$key];
$educational->field = $request->field[$key];
$educational->institution_id = $request->institution_id[$key];
$educational->branch = $request->branch[$key];
$educational->institution_education = $request->institution_education[$key];
$educational->gpa = $request->gpa[$key];
$educational->land_id = $request->land_id[$key];
$educational->province_id = $request->province_id[$key];
$educational->town_id = $request->town_id[$key];
$educational->province_name = $request->province_name[$key];
$educational->town_name = $request->town_name[$key];
$educational->entrance = $request->entrance[$key];
$educational->graduate = $request->graduate[$key];
$educational->currently_studying = $request->has("currently_studying.$key");
$educational->save();
}
}
من از هر پنج روش استتفاده کردم اما هیچ کدوشون کار نکرد. میخوام بعد از لاگین کاربر وارد این صفحه بشه که حالا نمیدونم ایجاد بشه ، آپدیت بشه، نمی دونم ولی به نظر من اپدیت بشه.
هیچ ارروری دریافت نمیکنم.
نام رشته تحصیلی هم در فرم و هم در جدولش اسمش field هست.
همه فیلدهاش هم در جدول nullable() قرار دادم چون به خاطر اینکه شاید کاربر نیازی به پر کردن آن نباشه که بعدا خطایی صورت بگیره.
من میخوام همه این فیلدهارا در جدول educationals ذخیره کنم.
چرا برای حلقه foreach از $request->field استفاده کردید؟
به خاطر اینکه $request->field که در بالا اشاره کرده (رشته تحصیلی) اگر رشته تحصیلی خالی باشد اینا را دخیره نکن ولی اگر کاربر پر کرده باشد ذخیره اش کن، حالا شایذ شما روش دیگری میدونی یا روش بهتری داری.
$request->grade_id[$key]
$key هم دیگه بهتر از من میدونی چیه این به خاطر ذخیره شدن به صورت آرایه ای میبباشد.
@mhyeganeh
من در فرم دوتا مقدار رشته تحصیلی پر کردم و در کنترلر خط زیر را نوشتم.
dd($request->field);
بعد این را نمابش داد.
موقعی که ئستور زیر را نوشتم.
public function update(Request $request)
{
dd($request->all());
پیام زیر را میبینم
به لحاظ منطقی updateOrCreate همون چیزی هست که شما توی سوالتون به عنوان نیازتون بهش اشاره کردید. فقط ساختار کلی کدتون یک مقدار نامفهومه. مثلا توی لوپ ها، هیچ جایی از $value استفاده نشده و به شکل مثلا $request->institution_i d[$key] استفاده کردید. ایده ای ندارم که خروجیش همون چیزی میشه که شما میخواید یا نه. بهتره که خروجی dd($request) رو هم ضمیمه سوالتون کنید. ــ سعید مرادی در 4 سال قبل |
|||
@سعید.مرادی من پست خود را اپدیت کردم ــ Mahmoud Khosravi در 4 سال قبل | |||
کسی بلد نبود جواب بده ــ Mahmoud Khosravi در 4 سال قبل | |||
خب طبق چیزی که من متوجه شدم، شما یک فرم نسبتا طولانی دارید که قصد دارید کاربر وقتی وارد صفحه میشه اون رو ببینه و تکمیلش بکنه. یک جدول هم دارید توی دیتابیس با اسم educationals که میخواید تمام این فیلدها رو اونجا نگهداری کنید. اوکی خیلی هم خوب .. حالا قصه اینجاست که کلا مفهوم «آپدیت» کجای این فراینده؟ به عبارت بهتر، شما یک فرم داری که میخوای سابمیت کنی و تمام دیتاش رو بریزی توی دیتابیس که از نظر من صرفا یک insert هست. چرا فکر میکنی update باید باشه؟ ــ سعید مرادی در 4 سال قبل | |||
توی هر کدوم از روشها به عنوان مثال user_id داره. اگر کاربری که با اون user_id در جدول educationals وجود داشت، بیا کار بروز رساننی را انجام بده . در غیر این صورت new یعنی اضافه کن یا همین insert شو انجام بده. ــ Mahmoud Khosravi در 4 سال قبل |