من یه فرمی دارم شبیه زیر مثل رزومه ساز
میخوام بدونم که نحوه ذخیره کردن آن به چه شکلی است یعنی اضفه بشه یا اپدیت؟ من از هر چیز بگی استفاده کردم اما موفق نشدم ممثل 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();
}
}
من از هر پنج روش استتفاده کردم اما هیچ کدوشون کار نکرد. میخوام بعد از لاگین کاربر وارد این صفحه بشه که حالا نمیدونم ایجاد بشه ، آپدیت بشه، نمی دونم ولی به نظر من اپدیت بشه.
وقتی که توی فرم ها از آرایه استفاده میکنی ..
کلاس Request لاراول هم به ازای اون فیلد ها بهت آرایه بر میگردونه
1:
<input type="text" name="Education[0][title]">
2:
<input type="text" name="Education[1][title]">
حالا اگر سمت سرور فیلدها رو بگیری
$educations = $request->input('Education');
یه متغیر educations داری که حاوی آرایه ای از مدارک تحصیلی هست
که این آرایه باید پیمایش بشه تا اطلاعاتش قابل استفاده بشه
دوست عزیز؛ اگر سوالتون رو بتونید مقداری دقیق تر و مشخص تر بپرسید احتمالا زودتر پاسخش رو دریافت کنید و نیازی به ارسال این حجم از کد هم نیست 😊
الان مشکل دقیقا چیه؟ متن اروری که دریافت میکنید چیه؟
فرق اضافه کردن با آپدیت کردن هم به نظرم مشخصه دیگه... کجاش براتون ابهام داره؟!
روش های اول و چهارم و پنجم در نگاه اول رد میشن و مشکل دارند. ولی روش دوم و سوم تا حدی اوکی هستند.
داده ها رو به چه صورتی به بک اند پاس میدهید و چرا برای حلقه foreach از $request->field استفاده کردید؟! یک die&dumpt از $request->field بگیرید ببینید داخلش چیه...
معنی این سینتکس رو هم متوجه نمیشم!
$request->grade_id[$key]
دقیقا چکار میخواهید بکنید؟!
اگر در حال یادگیری لاراول هستید پیشنهاد میکنم اول چند تا نمونه تمرینی و ساده تر با تعداد فیلدهای خیلی کمتر رو به پایان برسونید تا با روش کارش آشنا بشید بعد سراغ چنین فرم هایی بروید.
هیچ ارروری دریافت نمیکنم.
نام رشته تحصیلی هم در فرم و هم در جدولش اسمش field هست.
نه من فیلم های آموزشی لاراول از راکت خرریدم و نگاه کردم و فقط مشکل من اینه.
همه فیلدهاش هم در جدول nullable() قرار دادم چون به خاطر اینکه شاید کاربر نیازی به پر کردن آن نباشه که بعدا خطایی صورت بگیره.
من میخوام همه این فیلدهارا در جدول educationals ذخیره کنم.
چرا برای حلقه foreach از $request->field استفاده کردید؟
به خاطر اینکه $request->field که در بالا اشاره کرده (رشته تحصیلی) اگر رشته تحصیلی خالی باشد اینا را دخیره نکن ولی اگر کاربر پر کرده باشد ذخیره اش کن، حالا شایذ شما روش دیگری میدونی یا روش بهتری داری.
$request->grade_id[$key]
$key هم دیگه بهتر از من میدونی چیه این به خاطر ذخیره شدن به صورت آرایه ای میبباشد.
من در فرم دوتا مقدار رشته تحصیلی پر کردم و در کنترلر خط زیر را نوشتم.
dd($request->field);
بعد این را نمابش داد.
من که اصلا متوجه نشدم مشکلتون در چی هست !
می خواید چیکار کنید دقیقا
در ضمن نیاز به اسپم کردن نیست همون ابتدا دقیق سوالتون رو مطرح بفرمایید اگر شخصی بلد بود حتما بهتون کمک میکنه
وقتی که توی فرم ها از آرایه استفاده میکنی ..
کلاس Request لاراول هم به ازای اون فیلد ها بهت آرایه بر میگردونه
1:
<input type="text" name="Education[0][title]">
2:
<input type="text" name="Education[1][title]">
حالا اگر سمت سرور فیلدها رو بگیری
$educations = $request->input('Education');
یه متغیر educations داری که حاوی آرایه ای از مدارک تحصیلی هست
که این آرایه باید پیمایش بشه تا اطلاعاتش قابل استفاده بشه
اگر به پست هام نگاه کنید توضیحات بیشتری دادم بگزاری اینطوری توضیح بدم
به عنوان مثال کاربر ممکنه یکی الی ده تا رشته مدرک تحصیلی پر کنه، و من میخوام اون یکی الی ده تا رو در دیتابیس دخیره کنه هر کاری میکنم ذخیره نمیشه. دقیقا مثل این سایت https://cvbuilder.me/builder شما بری ثبت نام کنی ورود رو بزنی وارد لینک بشی بعدی رو بزنی تا به مرحله ی سوابق تحصیلی بشی و بعد وارد اون مرحله شدی یکی الی دوتا فرم رو پر کنی و ذخیره رو بزنی. شاید خود شما هم داشته باشی و واردش شده باشی. برای اینکه بیشتر متوجه بشی کد می فرستم.
یه بار دیگه تاکید میکنم میخواهم ذخیره کنم.
جدول educational
public function up()
{
Schema::create('educationals', function (Blueprint $table) {
$table->bigIncrements('id');
$table->bigInteger('user_id')->unsigned()->nullable();
$table->foreign('user_id')->references('id')->on('users')->onDelete('cascade');
$table->bigInteger('grade_id')->unsigned()->nullable();
$table->foreign('grade_id')->references('id')->on('grades')->onDelete('cascade');
$table->string('field')->nullable();
$table->bigInteger('institution_id')->unsigned()->nullable();
$table->foreign('institution_id')->references('id')->on('institutions')->onDelete('cascade');
$table->string('branch')->nullable();
$table->string('institution_education')->nullable();
$table->string('gpa')->nullable();
$table->bigInteger('country_id')->unsigned()->nullable();
$table->foreign('country_id')->references('id')->on('countries')->onDelete('cascade');
$table->bigInteger('state_id')->unsigned()->nullable();
$table->foreign('state_id')->references('id')->on('states')->onDelete('cascade');
$table->bigInteger('city_id')->unsigned()->nullable();
$table->foreign('city_id')->references('id')->on('cities')->onDelete('cascade');
$table->string('state_name')->nullable();
$table->string('city_name')->nullable();
$table->string('entrance')->nullable();
$table->string('graduate')->nullable();
$table->boolean('currently_studying')->nullable();
$table->timestamps();
});
}
بلید من
<div class="container-fluid">
<b>سوابق تحصیلی</b>
<div class="mb-2 bg-white p-3 mb-5">
<div class="row p-3" id="showStudy">
</div>
<div class="w-100 text-center">
<p>سوابق تحصیلی دیگری را اضافه کنید.</p>
<a id="addStudy" class="bg-primary text-white pt-2 pb-2 pl-3 pr-3 rounded-circle cursor-pointer">
<i class="fas fa-plus"></i>
</a>
</div>
</div>
</div>
<script>
$(document).ready(function() {
let countStudy = 1;
$('#addStudy').click(function () {
countStudy++;
dynamicStudy(countStudy);
});
//dynamicStudy(countStudy);
function dynamicStudy(number) {
let html = '' +
'<div class="col-md-12 position-relative">\n' +
'<i class="fas fa-times text-danger position-absolute"></i>' +
'<div class="row">\n' +
'<div class="col-md-2">\n' +
'<div class="form-group">\n' +
'<label for="grade_id">مقطع</label>\n' +
'<select id="grade_id" name="grade_id[]" class="form-control">\n' +
'@foreach($grades as $grade)\n' +
'<option value="{{ $grade->id }}">\n' +
'{{ $grade->name }}\n' +
'</option>\n' +
'@endforeach\n' +
'</select>\n' +
'</div>\n' +
'</div>\n' +
'<div class="col-md-2">\n' +
'<div class="form-group">\n' +
'<label for="field">رشته تحصیلی</label>\n' +
'<input id="field" name="field[]" class="form-control">\n' +
'</div>\n' +
'</div>\n' +
'<div class="col-md-2">\n' +
'<div class="form-group">\n' +
'<label for="branch">گرایش/تخصص</label>\n' +
'<input id="branch" name="branch[]" class="form-control">\n' +
'</div>\n' +
'</div>\n' +
'<div class="col-md-2">\n' +
'<div class="form-group">\n' +
'<label for="institution_id">نوع موسسه</label>\n' +
'<select id="institution_id" name="institution_id[]" class="form-control">\n' +
'@foreach($institutions as $institution)\n' +
'<option value="{{ $institution->id }}">{{ $institution->name }}</option>\n' +
'@endforeach\n' +
'</select>\n' +
'</div>\n' +
'</div>\n' +
'<div class="col-md-2">\n' +
'<div class="form-group">\n' +
'<label for="institution_education">عنوان موسسه آموزشی</label>\n' +
'<input id="institution_education" name="institution_education[]" class="form-control">\n' +
'</div>\n' +
'</div>\n' +
'<div class="col-md-2">\n' +
'<div class="form-group">\n' +
'<label for="gpa">معدل</label>\n' +
'<input id="gpa" name="gpa[]" class="form-control">\n' +
'</div>\n' +
'</div>\n' +
'<div class="col-md-2">\n' +
'<div class="form-group">\n' +
'<label for="nation_id">کشور</label>\n' +
'<select id="nation_id" name="nation_id[]" class="form-control">\n' +
'<option></option>\n' +
'@foreach($countries as $country)\n' +
'<option value="{{ $country->id }}">{{ $country->name }}</option>\n' +
'@endforeach\n' +
'</select>\n' +
'</div>\n' +
'</div>\n' +
'<div class="col-md-2">\n' +
'<div class="form-group">\n' +
'<label for="province_id">استان</label>\n' +
'<select id="province_id" name="province_id[]" class="form-control">\n' +
'</select>\n' +
'<input name="province_name[]" id="province_id" class="form-control d-none">\n'+
'</div>\n' +
'</div>\n' +
'<div class="col-md-2">\n' +
'<div class="form-group">\n' +
'<label for="town_id">شهر</label>\n' +
'<select id="town_id" name="town_id[]" class="form-control">\n' +
'</select>\n' +
'<input name="town_name[]" id="town_id" class="form-control d-none">\n'+
'</div>\n' +
'</div>\n' +
'<div class="col-md-2">\n' +
'<div class="form-group">\n' +
'<label for="entrance">ورود</label>\n' +
'<input name="entrance[]" id="entrance" class="form-control">\n' +
'</div>\n' +
'</div>\n' +
'<div class="col-md-2">\n' +
'<div class="form-group">\n' +
'<label for="graduate">فراغت از تحصیل</label>\n' +
'<input name="graduate[]" id="graduate" class="form-control">\n' +
'</div>\n' +
'</div>\n' +
'<div class="col-md-2">\n' +
'<div class="form-group">\n' +
'<div class="custom-control custom-checkbox my-4 mr-sm-2">\n' +
'<input type="checkbox" class="custom-control-input" id="currently_studying" name="currently_studying[]">\n' +
'<label class="custom-control-label" for="currently_studying">در حال تحصیل</label>\n' +
'</div>\n' +
'</div>\n' +
'</div>\n' +
'</div>\n' +
'</div>';
$('#showStudy').append(html);
}
showDynamicStudy();
function showDynamicStudy(){
let html = '' +
'@foreach(auth()->user()->educationals as $educational)\n'+
'<div class="col-md-12 position-relative">\n' +
'<i class="fas fa-times text-danger position-absolute"></i>' +
'<div class="row">\n' +
'<div class="col-md-2">\n' +
'<div class="form-group">\n' +
'<label for="grade_id">مقطع</label>\n' +
'<select id="grade_id" name="grade_id[]" class="form-control">\n' +
'@foreach($grades as $grade)\n' +
'<option value="{{ $grade->id }}" {{ $educational->grade_id == $grade->id ? 'selected' : '' }}>\n' +
'{{ $grade->name }}\n' +
'</option>\n' +
'@endforeach\n' +
'</select>\n' +
'</div>\n' +
'</div>\n' +
'<div class="col-md-2">\n' +
'<div class="form-group">\n' +
'<label for="field">رشته تحصیلی</label>\n' +
'<input id="field" name="field[]" class="form-control" value="{{ $educational->field }}">\n' +
'</div>\n' +
'</div>\n' +
'<div class="col-md-2">\n' +
'<div class="form-group">\n' +
'<label for="branch">گرایش/تخصص</label>\n' +
'<input id="branch" name="branch[]" class="form-control" value="{{ $educational->branch }}">\n' +
'</div>\n' +
'</div>\n' +
'<div class="col-md-2">\n' +
'<div class="form-group">\n' +
'<label for="institution_id">نوع موسسه</label>\n' +
'<select id="institution_id" name="institution_id[]" class="form-control">\n' +
'@foreach($institutions as $institution)\n' +
'<option value="{{ $institution->id }}" {{ $educational->institution_id == $institution->id ? 'selected' : '' }}>{{ $institution->name }}</option>\n' +
'@endforeach\n' +
'</select>\n' +
'</div>\n' +
'</div>\n' +
'<div class="col-md-2">\n' +
'<div class="form-group">\n' +
'<label for="institution_education">عنوان موسسه آموزشی</label>\n' +
'<input id="institution_education" name="institution_education[]" class="form-control" value="{{ $educational->institution_education }}">\n' +
'</div>\n' +
'</div>\n' +
'<div class="col-md-2">\n' +
'<div class="form-group">\n' +
'<label for="gpa">معدل</label>\n' +
'<input id="gpa" name="gpa[]" class="form-control" value="{{ $educational->gpa }}">\n' +
'</div>\n' +
'</div>\n' +
'<div class="col-md-2">\n' +
'<div class="form-group">\n' +
'<label for="nation_id">کشور</label>\n' +
'<select id="nation_id" name="nation_id[]" class="form-control">\n' +
'<option></option>\n' +
'@foreach($countries as $country)\n' +
'<option value="{{ $country->id }}" {{ $educational->nation_id == $country->id ? 'selected' : '' }}>\n' +
'{{ $country->name }}\n'+
'</option>\n' +
'@endforeach\n' +
'</select>\n' +
'</div>\n' +
'</div>\n' +
'<div class="col-md-2">\n' +
'<div class="form-group">\n' +
'<label for="province_id">استان</label>\n' +
'<select id="province_id" name="province_id[]" class="form-control">\n' +
'@foreach($states as $state)\n' +
'<option value="{{ $state->id }}" {{ $educational->province_id == $state->id ? 'selected' : '' }}>\n' +
'{{ $state->name }}\n' +
'</option>\n' +
'@endforeach\n' +
'</select>\n' +
'<input name="province_name[]" id="province_id" class="form-control d-none" value="{{ $educational->province_name }}">\n' +
'</div>\n' +
'</div>\n' +
'<div class="col-md-2">\n' +
'<div class="form-group">\n' +
'<label for="town_id">شهر</label>\n' +
'<select id="town_id" name="town_id[]" class="form-control">\n' +
'@foreach($cities as $city)\n' +
'<option value="{{ $city->id }}" {{ $educational->town_id == $city->id ? 'selected' : '' }}>\n' +
'{{ $city->name }}\n' +
'</option>\n' +
'@endforeach\n' +
'</select>\n' +
'<input name="town_name[]" id="town_id" class="form-control d-none" value="{{ $educational->town_name }}">\n' +
'</div>\n' +
'</div>\n' +
'<div class="col-md-2">\n' +
'<div class="form-group">\n' +
'<label for="entrance">ورود</label>\n' +
'<input name="entrance[]" id="entrance" class="form-control" value="{{ $educational->entrance }}">\n' +
'</div>\n' +
'</div>\n' +
'<div class="col-md-2">\n' +
'<div class="form-group">\n' +
'<label for="graduate">فراغت از تحصیل</label>\n' +
'<input name="graduate[]" id="graduate" class="form-control" value="{{ $educational->graduate }}">\n' +
'</div>\n' +
'</div>\n' +
'<div class="col-md-2">\n' +
'<div class="form-group">\n' +
'<div class="custom-control custom-checkbox my-4 mr-sm-2">\n' +
'<input type="checkbox" class="custom-control-input" id="currently_studying" name="currently_studying[]" {{ $educational->currently_studying == 1 ? 'checked' : '' }}>\n' +
'<label class="custom-control-label" for="currently_studying">در حال تحصیل</label>\n' +
'</div>\n' +
'</div>\n' +
'</div>\n' +
'</div>\n' +
'</div>\n' +
'@endforeach';
$('#showStudy').append(html);
}
});
</script>
موقعی که دستور زیر را نوشتم.
public function update(Request $request)
{
dd($request->all());
پیام زیر را میبینم
بزار اینطوری توضیح بدم به عنوان ما الان یک رکورد در جدول داریم:
و یه نمونه در فرم هم نمایش میدهد.
و ممکنه کاربری که لاگین کرده یکی دیگه (که شاید 10 تا دیگه) روی( سوابق تحصیلی دیگری را اضافه کنید.) را کلیک کرده باشد. و اطلاعات اش را پر کند.
این در فرم بالا چطور میشه در سطر جدید در جدول دیتابیساضافه بشه که ما الان یکی سطر داریم. میخواهم دو تا سطر داشته باشه.
امیدوارم تا اینجا بیشتر متوجه شده باشی با این مثالها. چون دیگه من بیشتر از این نمیتونم بنویسم.
آیا مایل به ارسال نوتیفیکیشن و اخبار از طرف راکت هستید ؟