با سلام و خسته نباشید
ممنون میشم من رو راهنمایی بفرمایید درمورد مشکلی که در این زمینه برام پیش اومده
خب من یک جدولی دارم که قرار هستش یکسری مشخصه هایی که کاربر دریافت کنه
سه تا ستون داره با عناوین
خصوصیت - ولیو - یوزر آی دی
خصویت از نوع استرینگ هستش
ولیو از نوع اینتیجر
و یوزر آی دی هم که خب آی دی کاربر رو دریافت میکنه و مسلما از نوع عددی هستش
چون رابطه جدولی اینها هم با جدول کاربر به صورت یک در چند هستش
یعنی هر کاربر میتونه چندین خصوصیت داشته باشه و هر خصوصیت متعلق هستش به یک کاربر
پس جدول واسطه ای رو ندارم براش و از نوع
belongsTo و hasMany
اینپوت هایی که من دارم به این صورت هستش چون قابلیت این رو گذاشتم که اینپوت ها میتونن هی تکرار بشه توسط کاربر و نام اونها خصوصیت [] داره
<input type="number" id="name" class="form-control"
name="percent[]" placeholder="%" min="1" max="100">
مقادیر رو به درستی دریافت میکنم اما مشکلم با ذخیره کردن اونهاست
یعنی زمانی که میام در سمت کنترلر خودم به این صورت مقادیر رو دریافت کنم خب این خطا رو به من میده
$lang->user_id = $userId;
$lang->lang = $request->input('lang');
$lang->percent = $request->input('percent');
$lang->save();
Array to string conversion
و چون رابطه سوم جدولی دیگه ای هم ندارم نمیتونم از اتچ و یا سینک کردن استفاده کنم
من چطور میتونم حالا اطلاعات رو در دیتابانک خودم ذخیره کنم
سلام وقت بخیر
متن خطا مشخصه میگه شما میخوایید تبدیل array به استرینگ انجام بدید
شما نمیتونید ارایه توی دیتابیس ذخیره کنید و باید cast کنید توی مدل
خب آخه مشکل همینه زمانی که من
protected $casts = [
'lang' => 'array',
'percent' => 'array',
];
هم میکنم سمت مدل به من باز خطا میده
چون اطلاعات در واقع داره بصورت آرایه ریکويست میشه دیگه
در این صورت این خطا رو دارم
Invalid datetime format: 1366 Incorrect integer value
آرایه رو نمیاد مقادیرش رو که حالا برای اینپوت lang و percent رو یک ردیف ذخیره کنه بعد مقدار بعدی آرایه رو دوباره بریزه تو ردیف بعدی انگار میخواد همه مقادیر دریافت شده رو یه ردیف در نظر بگیره واسه همین ازین ور خطا میده به من که فرمت تایمت درست نیست در حالی که ربطی به فرمت تایپ نداره این نیومده به ازاری هر مقدار آرایه یک ردیف جدا ذخیره کنه
توی کنترلر میتونید json کنید که تبدیل انجام بشه
باید dd بگیرید از مرحله به مرحله تا دقیق متوجه بشید
من واقعیت دقیق متوجه نشدم چی به چی شد
بصورت شسته رفته داستان ازین قراره که من دوتا فیلد دارم
که مقادیر این دو تا فیلد قراره به عنوان یک ردیف در جدول دیتا من قرار بگیره
حالا اومدم با جاوااسکریپت کریت المنت کردم که کاربر میتونه در صورت نیاز بیشترش تعداد این باکسی که دو تا فیلد توش هستند رو به تعداد دلخواه خودش هی کریت کنه
پس دیتایی که داره ارسال میشه باید بصورت آرایه باشه که چون مشخص نیست که چندبار می خواد کاربر این div ی این دو تا فیلد درونش هستند رو ایجاد کنه
در هر حال دیتا بصورت آرایه ارسال میشه
من اطلاعات رو dd کردم و بررسی هم میکنم مرحله به مرحله مشکل من فقط ذخیره کردن این اطلاعاتی هستش که داره ارسال میشه
با توجه به فرمایش اول شما اتفاقا این موضوع رو قبلتر هم تست کردم و اومدم به مدل معرفی کردم casts
حالا فرض اگر بکنیم که کاربر دوبار این دایو رو ایجاد کرده باشه
یعنی دو تا ردیف باید اطلاعات رکورد بشه تو جدول
اما دو تا رکورد نمیکنه بلکه همه رو میخواد تو یه رکورد ذخیره کنه تمام مقادیری که دریافت میکنه رو میاد تو یه ردیف ذخیره کنه و به من خطا میده
من چطوری میتونم اینها رو بهش بفهمونم که عزیز هر باکسی که تولید میکنه کاربر رو برو تو یه ردیف ذخیره کن
توی حلقه نیست؟ چند دستور insert نوشتید؟ خروجی ذخیره شده به چه صورت هست در دیتابیس؟