• 1400/03/09

Array to string conversion :

با سلام و خسته نباشید 

ممنون میشم من رو راهنمایی بفرمایید درمورد مشکلی که در این زمینه برام پیش اومده 
خب من یک جدولی دارم که قرار هستش یکسری مشخصه هایی که کاربر دریافت کنه 

سه تا ستون داره با عناوین 
خصوصیت - ولیو - یوزر آی دی 

خصویت از نوع استرینگ هستش 
ولیو از نوع اینتیجر 
و یوزر آی دی هم که خب آی دی کاربر رو دریافت میکنه و مسلما از نوع عددی هستش 

 

چون رابطه جدولی اینها هم با جدول کاربر به صورت یک در چند هستش 
یعنی هر کاربر میتونه چندین خصوصیت داشته باشه و هر خصوصیت متعلق هستش به یک کاربر 

پس جدول واسطه ای رو ندارم براش و از نوع

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 

و چون رابطه سوم جدولی دیگه ای هم ندارم نمیتونم از اتچ و یا سینک کردن استفاده کنم 
من چطور میتونم حالا اطلاعات رو در دیتابانک خودم ذخیره کنم 

  • 1400/03/09
  • ساعت 14:25

سلام وقت بخیر

 

متن خطا مشخصه میگه شما میخوایید تبدیل array به استرینگ انجام بدید

 

شما نمیتونید ارایه توی دیتابیس ذخیره کنید و باید cast کنید توی مدل


  • 1400/03/09
  • ساعت 18:24

خب آخه مشکل همینه زمانی که من 

 

    protected $casts = [
        'lang' => 'array',
        'percent' => 'array',
    ];

 

هم میکنم سمت مدل به من باز خطا میده
چون اطلاعات در واقع داره بصورت آرایه ریکويست میشه دیگه
در این صورت این خطا رو دارم 

Invalid datetime format: 1366 Incorrect integer value

آرایه رو نمیاد مقادیرش رو که حالا برای اینپوت lang و percent رو یک ردیف ذخیره کنه بعد مقدار بعدی آرایه رو دوباره بریزه تو ردیف بعدی انگار میخواد همه مقادیر دریافت شده رو یه ردیف در نظر بگیره واسه همین ازین ور خطا میده به من که فرمت تایمت درست نیست در حالی که ربطی به فرمت تایپ نداره این نیومده به ازاری هر مقدار آرایه یک ردیف جدا ذخیره کنه


  • 1400/03/09
  • ساعت 18:55

توی کنترلر میتونید json کنید که تبدیل انجام بشه

 

باید dd بگیرید از مرحله به مرحله تا دقیق متوجه بشید 

من واقعیت دقیق متوجه نشدم چی به چی شد 


  • 1400/03/09
  • ساعت 22:17

بصورت شسته رفته داستان ازین قراره که من دوتا فیلد دارم 

که مقادیر این دو تا فیلد قراره به عنوان یک ردیف در جدول دیتا من قرار بگیره 
حالا اومدم با جاوااسکریپت کریت المنت کردم که کاربر میتونه در صورت نیاز بیشترش تعداد این باکسی که دو تا فیلد توش هستند رو به تعداد دلخواه خودش هی کریت کنه

 

پس دیتایی که داره ارسال میشه باید بصورت آرایه باشه که چون مشخص نیست که چندبار می خواد کاربر این div  ی این دو تا فیلد درونش هستند رو ایجاد کنه 
در هر حال دیتا بصورت آرایه ارسال میشه 
من اطلاعات رو dd کردم و بررسی هم میکنم مرحله به مرحله مشکل من فقط ذخیره کردن این اطلاعاتی هستش که داره ارسال میشه 

با توجه به فرمایش اول شما اتفاقا این موضوع رو قبلتر هم تست کردم و اومدم به مدل معرفی کردم casts
حالا فرض اگر بکنیم که کاربر دوبار این دایو رو ایجاد کرده باشه 
یعنی دو تا ردیف باید اطلاعات رکورد بشه تو جدول 
اما دو تا رکورد نمیکنه بلکه همه رو میخواد تو یه رکورد ذخیره کنه تمام مقادیری که دریافت میکنه رو میاد تو یه ردیف ذخیره کنه و به من خطا میده 

من چطوری میتونم اینها رو بهش بفهمونم که عزیز هر باکسی که تولید میکنه کاربر رو برو تو یه ردیف ذخیره کن 


  • 1400/03/15
  • ساعت 13:05

توی حلقه نیست؟ چند دستور insert نوشتید؟ خروجی ذخیره شده به چه صورت هست در دیتابیس؟


logo-samandehi