ابراهیم
3 سال پیش توسط ابراهیم مطرح شد
9 پاسخ

ارور در foreach

سلام خسته نباشید دوستان من کدهای که نوشتم هرباری که چک میکنم اصلا غلط یا چیزی نداره نمیدونم علتش چیه
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
                    ]);
                }
            }
        }
    }

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

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


ثبت پرسش جدید
ابراهیم
تخصص : برنامه نویسی
@ebrahimghafeli7 3 سال پیش مطرح شد
1

@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
تخصص : طراحی وب
@husseinhashim1133 3 سال پیش مطرح شد
1

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


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

@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
                    ]);
                }
            }
        }
    }

اینم خروجی :

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


محمد رضا
تخصص : Full Stack Developer
@salar.mohammad2013 3 سال پیش مطرح شد
0

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


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

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


محمد رضا
تخصص : Full Stack Developer
@salar.mohammad2013 3 سال پیش مطرح شد
0

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


hussein
تخصص : طراحی وب
@husseinhashim1133 3 سال پیش مطرح شد
0

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


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

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

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


ابراهیم
تخصص : برنامه نویسی
@ebrahimghafeli7 3 سال پیش مطرح شد
1

@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 }}][]">

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

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