سلام. من وقتی رو ارسال مقاله میزنم تا اطلاعات تو دیتا بیس ذخیره بشن و برگرده صفحه قبل این ارور رو میده:
Array to string conversion
کد مربوطه هم اینا برای ارسال :
$imagesUrl = $this->uploadImages($request->file('images'));
auth()->user()->article()->create(array_merge($request->all() , [ 'images' => $imagesUrl]));
return redirect(route('articles.index'));
حتی در مدل article هم cast کردم ولی مشکل حل نشد!!!
protected $casts = [
'images' => 'array'
];
@hesammousavi
میشه لطفا یه نفر کمک کنه این مشکل حل بشه ...
دوست عزیز؛
بیش از 50 درصد از مسیر یافتن راه حل، طرح درست مسئلهست و متاسفانه با این مقدار اطلاعاتی که دادید خیلی سخته نظر دادن و برای من نوعی مشخص نیست که هدفتون چیه. مثلا باید ساختار دیتابیستون و بصورت خاص جدول articles رو دید.
ولی آیا خط زیر عملیاتی که مدنظرتون هست رو به درستی انجام میده؟
$imagesUrl = $this->uploadImages($request->file('images'));
احتمالا باید فایل تصاویر رو در مسیر تعیین شده ذخیره کنه و اسامیشون رو برگردونه. اگر بله درست انجام میشه، چنانچه مقدار متغیر imagesUrl$
رو die and dump کنید چه نتیجه ای بر میگردونه؟
اونجوری که از اسم images برداشت میشه چندتا تصویر هستند و احتمالا مقدارش باید از جنس آرایه باشه. بعد شما چجوری میخواید محتوای آرایه رو داخل یک فیلد دیتابیس (ستون images) ذخیره کنید؟!؟!
یا باید قبلش با استفاده از دستور implode() آرایه تون رو تبدیل به string کنید (اصلا روش خوبی نیست) و یا اینکه طبق روش های معمول یک رابطه one-to-many بین دو مدل Article و Image برقرار کنید و دو تا جدول جداگانه داشته باشید و با ستون article_id بهم متصلشون کنید.
گر چه باز هم متوجه نمیشم چرا یک مقاله باید چند تا تصویر داشته باشه و هدفتون چی هست...! معمولا هر مقاله یک تصویر شاخص داره و الباقی تصاویر داخل خود متن مقاله بکار میرن.
@mhyeganeh
شما کاملا درست میگین و از رانماییتون ممنونم
فایل تصاویر رو که گفتین ، نه در مسیر تعیین شده ذخیره نمیکنه
من دوره پروژه محور اقای موسوی رو میبینم و دقیقا کدی رو زدم که ایشون زدن ولی برا من ارور میده
نمیدونم واقعا چرا برای مقاله چند تا تصویر گذاشتن
من سطحم انقدر بالا نیست و در حال یادگیریم میشه راه حلی بگین که این ارور رد بشه و اطلاعاتو ذخیره کنه ممنون میشم
دوست عزیز خط اول شما
$this->uploadImages
استفاده شده کد function استفاده کردین رو بفرستین
@farshadm9979
احتمالا دوره قدیمی راکت رو دارید نگاه میکنید درسته ؟
توی این دوره چند عکس پیشفرض برای مقالات در نظر نگرفتن . اگر درست یادم باشه یک عکس رو با پکیج Intervention Image به سایز های مختلف در میاوردن واسه اینکه مدیر بتونه انتخاب کنه از بینشون چه سایزی نمایش داده بشه .
پیشنهاد میکنم وقتی به اینصورت نمیتونید مشکل کد رو پیدا کنید جاهای مختلف کد die dump قرار بدید و بررسی کنید که متغیرهاتون چه مقداری دارند . این کار یه مزیت دیگه هم داره میتونید تست کنید کد های برنامتون تا کجا بدون مشکل اجرا میشه . در واقع یکی از روش های دیباگ کردن از قدیم الایام همین بوده . مثلا داخل متد uploadImages یک dd قرار بدید و ببینید تا کجای متد درست اجرا میشه . بعد مرحله بعدی موقع Return کردن خروجی این متد هم یک dd قرار بدید ببینید چه مقداری داخلش قرار گرفته . مثلا :
$imagesUrl = $this->uploadImages($request->file('images'));
dd($imagesUrl); //اینجا متوجه میشید قبل از ذخیره کردن متغیرتون چطور مقداردهی شده آیا درسته یا خیر؟
auth()->user()->article()->create(array_merge($request->all() , [ 'images' => $imagesUrl]));
return redirect(route('articles.index'));
با همین روش ساده dd یا var_dump گذاشتن میتونید راحت دیباگ کنید .
نتیجه رو اعلام کنید تا در صورت نیاز بیشتر راهنمایی کنیم
@SobhanDadkhah
بله اقای دادخواه من از دوره قدیمی پروژه محور لاراول استفاده میکنم که منظور از چند تصویرم همینه که با سایز های مختلف اراِِه میشه درست میگین شما
من dd رو همونجا که گفتین استفاده کردم ولی بازم وقتی ارسال مقاله رو میزنم همون ارور رو میده..!
@farshadm9979
خوب پس مشخص ميشه مشكل از تابع uploadImages هست و يا كد هايي كه قبل از اون هست . بايد جاهاي مختلف كدتون dd بذاريد و تست كنيد كه به كجاي كدهاتون ميرسه و اين ارور مشخصا واسه كدوم قسمت كد هست
@farshadm9979
خوب پس مشخص ميشه مشكل از تابع uploadImages هست و يا كد هايي كه قبل از اون هست . بايد جاهاي مختلف كدتون dd بذاريد و تست كنيد كه به كجاي كدهاتون ميرسه و اين ارور مشخصا واسه كدوم قسمت كد هست
@SobhanDadkhah
سلام اقای دادخواه
ببخشین اگه ایرادی نداره میخواستم ادرس ایمیل یا واتستون رو بهم بدین یه کاری داشتم شخصا ، ممنون میشم
تشکر...
آیا مایل به ارسال نوتیفیکیشن و اخبار از طرف راکت هستید ؟