farshadms
3 سال پیش توسط farshadms مطرح شد
11 پاسخ

ارورArray to string conversion

سلام. من وقتی رو ارسال مقاله میزنم تا اطلاعات تو دیتا بیس ذخیره بشن و برگرده صفحه قبل این ارور رو میده:
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
میشه لطفا یه نفر کمک کنه این مشکل حل بشه ...


ثبت پرسش جدید
محمدحسن یگانه
تخصص : Full-Stack Web Developer Freel...
@mhyeganeh 3 سال پیش آپدیت شد
1

دوست عزیز؛
بیش از 50 درصد از مسیر یافتن راه حل، طرح درست مسئله‌ست و متاسفانه با این مقدار اطلاعاتی که دادید خیلی سخته نظر دادن و برای من نوعی مشخص نیست که هدفتون چیه. مثلا باید ساختار دیتابیستون و بصورت خاص جدول articles رو دید.

ولی آیا خط زیر عملیاتی که مدنظرتون هست رو به درستی انجام میده؟

 $imagesUrl = $this->uploadImages($request->file('images'));

احتمالا باید فایل تصاویر رو در مسیر تعیین شده ذخیره کنه و اسامیشون رو برگردونه. اگر بله درست انجام میشه، چنانچه مقدار متغیر imagesUrl$ رو die and dump کنید چه نتیجه ای بر میگردونه؟

اونجوری که از اسم images برداشت میشه چندتا تصویر هستند و احتمالا مقدارش باید از جنس آرایه باشه. بعد شما چجوری میخواید محتوای آرایه رو داخل یک فیلد دیتابیس (ستون images) ذخیره کنید؟!؟!

یا باید قبلش با استفاده از دستور implode() آرایه تون رو تبدیل به string کنید (اصلا روش خوبی نیست) و یا اینکه طبق روش های معمول یک رابطه one-to-many بین دو مدل Article و Image برقرار کنید و دو تا جدول جداگانه داشته باشید و با ستون article_id بهم متصلشون کنید.

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


حسین
@h.j432 3 سال پیش مطرح شد
1

کد $this->uploadImages رو هم قرار بدید


farshadms
@farshadm9979 3 سال پیش مطرح شد
0

@mhyeganeh
شما کاملا درست میگین و از رانماییتون ممنونم
فایل تصاویر رو که گفتین ، نه در مسیر تعیین شده ذخیره نمیکنه
من دوره پروژه محور اقای موسوی رو میبینم و دقیقا کدی رو زدم که ایشون زدن ولی برا من ارور میده
نمیدونم واقعا چرا برای مقاله چند تا تصویر گذاشتن
من سطحم انقدر بالا نیست و در حال یادگیریم میشه راه حلی بگین که این ارور رد بشه و اطلاعاتو ذخیره کنه ممنون میشم


farshadms
@farshadm9979 3 سال پیش مطرح شد
0

@h.j432
به کجای کدم این $this->uploadImages کد رو اضافه کنم میشه راهنمایی کنین؟


حسین
@h.j432 3 سال پیش مطرح شد
0

دوست عزیز خط اول شما

$this->uploadImages

استفاده شده کد function استفاده کردین رو بفرستین


سبحان دادخواه
تخصص : دانشجوی برنامه نویسی :)
@SobhanDadkhah 3 سال پیش آپدیت شد
0

@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 گذاشتن میتونید راحت دیباگ کنید .
نتیجه رو اعلام کنید تا در صورت نیاز بیشتر راهنمایی کنیم


farshadms
@farshadm9979 3 سال پیش مطرح شد
0

@SobhanDadkhah
بله اقای دادخواه من از دوره قدیمی پروژه محور لاراول استفاده میکنم که منظور از چند تصویرم همینه که با سایز های مختلف اراِِه میشه درست میگین شما
من dd رو همونجا که گفتین استفاده کردم ولی بازم وقتی ارسال مقاله رو میزنم همون ارور رو میده..!


سبحان دادخواه
تخصص : دانشجوی برنامه نویسی :)
@SobhanDadkhah 3 سال پیش مطرح شد
0

@farshadm9979
خوب پس مشخص ميشه مشكل از تابع uploadImages هست و يا كد هايي كه قبل از اون هست . بايد جاهاي مختلف كدتون dd بذاريد و تست كنيد كه به كجاي كدهاتون ميرسه و اين ارور مشخصا واسه كدوم قسمت كد هست


سبحان دادخواه
تخصص : دانشجوی برنامه نویسی :)
@SobhanDadkhah 3 سال پیش مطرح شد
0

@farshadm9979
خوب پس مشخص ميشه مشكل از تابع uploadImages هست و يا كد هايي كه قبل از اون هست . بايد جاهاي مختلف كدتون dd بذاريد و تست كنيد كه به كجاي كدهاتون ميرسه و اين ارور مشخصا واسه كدوم قسمت كد هست


farshadms
@farshadm9979 3 سال پیش مطرح شد
1

@SobhanDadkhah
ممنون حتما همینکارو میکنم تا مشخص بشه ببینم ارور واسه کدوم قسمته


farshadms
@farshadm9979 3 سال پیش مطرح شد
0

@SobhanDadkhah
سلام اقای دادخواه
ببخشین اگه ایرادی نداره میخواستم ادرس ایمیل یا واتستون رو بهم بدین یه کاری داشتم شخصا ، ممنون میشم
تشکر...


برای ارسال پاسخ لازم است وارد شده یا ثبت‌نام کنید

ورود یا ثبت‌نام