راکت
حل شده

ارور در foreach

9 پاسخ

سلام خسته نباشید دوستان من کدهای که نوشتم هرباری که چک میکنم اصلا غلط یا چیزی نداره نمیدونم علتش چیه
foreach() argument must be of type array|object, string given
اینم هم کدهای که نوشتم :

public function add_items($id,Request $request)
    {
        $product=Product::where('id',$id)->select(['id','title','cat_id'])->firstOrFail();
        $item_value=$request->get('item_value');
        DB::table('item_value')->where(['product_id'=>$id])->delete();
        foreach($item_value as $key=>$value)
        {
            foreach($value as $key2=>$value2)
            {
                if(!empty($value2)){
                    DB::table('item_value')->insert([
                        'product_id'=>$id,
                        'item_id'=>$key,
                        'item_value'=>$value2
                    ]);
                }
            }
        }
    }

اینم تصویر از ارور :

توضیح تصویر رو وارد کنید

ثبت پرسش جدید

پاسخ‌ها

9
ابراهیم
ابراهیم
@ebrahimghafeli7

تخصص: برنامه نویسی

بهترین پاسخ

@husseinhashim1133
@salar.mohammad2013
خسته نباشید دوستان مشکلم برطرف شد حلقه ام درست بوده منتهی داخل فایل index.blade.php قسمت input قبلا اینجوری نوشتم یعنی تو قسمت name اشتباهی نوشتم

 <input type="text" class="form-control" name="item_value[{{ $value2->id }}[]]">

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

 <input type="text" class="form-control" name="item_value[{{ $value2->id }}][]">
hussein
hussein
@husseinhashim1133

تخصص: طراحی وب

سلام $value داره بهت string میده به صورت array نیست که foreach کنی خوده $value رو dd بگیر

ابراهیم
ابراهیم
@ebrahimghafeli7

تخصص: برنامه نویسی

@husseinhashim1133
value$ یک نوع آرایه هست و (value$)dd براش گرفتم نشون میده ولی وقتی برمیدارم خطا میده

public function add_items($id,Request $request)
    {
        $product=Product::where('id',$id)->select(['id','title','cat_id'])->firstOrFail();
        $item_value=$request->get('item_value');
        DB::table('item_value')->where(['product_id'=>$id])->delete();
        foreach($item_value as $key=>$value)
        {
            dd($value);
            foreach ($value as $key2=>$value2)
            {
                if(!empty($value2)){
                    DB::table('item_value')->insert([
                        'product_id'=>$id,
                        'item_id'=>$key,
                        'item_value'=>$value2
                    ]);
                }
            }
        }
    }

اینم خروجی :

توضیح تصویر رو وارد کنید

شاید پاسخ شما همین‌جا باشد

محمد رضا
محمد رضا
@salar.mohammad2013

تخصص: Full Stack Developer

سلام
داداش خروجی رشته هست دیگه
چرا میگید آرایه؟؟؟؟
value شما دقیقا یک رشته هست.

ابراهیم
ابراهیم
@ebrahimghafeli7

تخصص: برنامه نویسی

@salar.mohammad2013
خب الان واسه حل این مشکل چه کار کنم؟
چه دستوری باید بنویسم؟

محمد رضا
محمد رضا
@salar.mohammad2013

تخصص: Full Stack Developer

شما روی چیزی که ارایه نیست داری پیمایش میکنی
مشکل اینه که ارایه نداری
باید ببینی میخوایی چیکار کنی پروژت چیه
چیزی که من میبینم حقه دوم رو پاک کن کلا به جای valur2 از همون value حلقه اول استفاده کن
داده هات رو باید بررسی کنی ببینی چیو داری ذخیره میکنی
سخته ما بگیم چی میخوایی شما
چون شما میدونی چه داده ای میگیری و چی میخوایی ذخیره کنی
باید جداول رو به نمایش بزاری دریافتی متد رو ب نمایش بزاری و ازین مسایل

hussein
hussein
@husseinhashim1133

تخصص: طراحی وب

طبق گفته محمد رضا .
واینکه میخوای تو دیتاپیس چی ذخیره کنی ؟ وچطوری میخوای نمایشش بدی

ابراهیم
ابراهیم
@ebrahimghafeli7

تخصص: برنامه نویسی

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

public function up()
    {
        Schema::create('item_value', function (Blueprint $table) {
            $table->bigIncrements('id');
            $table->integer('product_id');
            $table->integer('item_id');
            $table->text('item_value');
            $table->timestamps();
        });
    }

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

ابراهیم
ابراهیم
@ebrahimghafeli7

تخصص: برنامه نویسی

@husseinhashim1133 بله آقا محمد رضا درست میگه روشی که بهم گفت انجام دادم باز خطا میده
نمیدونم قسمت مشخصات محصول یا همون فنی دیجی کالا دیدی یا ن من کادرها ساختم که مثلا واسه مشخصات کلی ابعاد - وزن - اندازه و غیره ثبت کنم حالا وقتی داخل همین چیزی بنویسم خطا میده

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

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