محمد رضا
3 سال پیش توسط محمد رضا مطرح شد
22 پاسخ

مشکل ویرایش اطلاعات در لاراول

سلام و خسته نباشید
من یه سری اطلاعات دارم برای سفارشم که میخوام ویرایشش کنم
همه چیز ویرایش میشه تا جایی ک میبینم ب جز یک فیلد ک خیلی عجیبه برام (total_price)
توی fillable هم هست
اینا داده های من هست ک قراره ویرایش بشه ، دقیقا قبل از ویرایش داده ها رو خروجی گرفتم که مطمین شم مقدار میگیرن

array:12 [
  "created_at" => "2021-05-26 23:16"
  "delivery_type" => "presence"
  "total_price" => 6500000
  "credit_price" => 6500000
  "explain" => null
  "has_bonded" => "no"
  "discount" => 0
  "bonded" => 0
  "tax" => 0
  "payment_type" => "waiting"
  "changed" => "yes"
  "shift_history_id" => 3
]

اینم fillable من هستش

    protected $fillable=[
        'delivery_type',
        'customer_id',
        'payment_type',
        'status',
        'total_price',
        'credit_price',
        'has_bonded',
        'created_at',
        'discount',
        'discount_type',
        'tax',
        'explain',
        'bonded',
        'shift_history_id',
        'changed'
    ];

اینم جدولم

        Schema::create('orders', function (Blueprint $table) {
            $table->id();
            $table->unsignedBigInteger('customer_id')->default(0);
            $table->unsignedBigInteger('shift_history_id');
            $table->foreign('shift_history_id')->references('id')->on('shift_histories')->onDelete('cascade');
            $table->unsignedBigInteger('user_id');
            $table->foreign('user_id')->references('id')->on('users')->onDelete('cascade');
            $table->enum('delivery_type',['presence','unpresence']);
            $table->enum('payment_type',['cash','POS','cartToCart','credit','waiting','several'])->default('waiting');
            $table->enum('status',['received','preparing','deliverToCourier','delivered'])->default('received');
            $table->unsignedBigInteger('total_price');
            $table->unsignedInteger('credit_price')->default(0);
            $table->enum('has_bonded',['no','received','not_received'])->default('no');
            $table->unsignedInteger('discount')->default(0);
            $table->enum('discount_type',['percent','numerical'])->default('percent');
            $table->enum('changed',['yes','no'])->default('no');
            $table->enum('bonded_type',['money','evidence'])->default('money');
            $table->string('bonded');
            $table->integer('tax')->default(0);
            $table->text('explain')->nullable();
            $table->timestamps();
        });

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

$order->update($all_data);

چیزی ک خیلی عجیبه اینه که همین داده ها برای create ارسال میشن (البته ب شکل کامل تر فیلد ها) و total_price مقدارش میشینه سر جاش ولی توی ویرایش نه

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

        $order->update([
            'total_price'=>$all_data['total_price']
        ]);

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

@mohaligateway
@muhammad
@Rp76
@mrn
@juza66
@ali.bayat
@hesammousavi
@hosseinshirinegad98
@milad
@ajdar9667


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

مرسی از همه ی دوستانی که مشارکت کردن
اشتباه از خود بنده بود و سهل انگاری کردم
دستور if اجرا نمیشده در شرایط خاص و متوجه ویرایش شدن و نشدنش نمیشدم و حالتی ک درست کار میکرده دقت نمیکردم ک مبلغ هم کار میکنه و کلا دستور اجرا نمیشده

        if($request->newCustomer) {
            $customer=Customer::create($request->newCustomer);
            $all_data['customer_id']=$customer->id;
            $order->update($all_data);
        }else{
            $order->update($all_data);
        }

مشکل برطرف شد
سپاس از همتون
عذر خواهم بابت گرفتن وقت شریفتون
@rezajahangir
@juza66
@MatinTayebi


رضا جهانگیر
تخصص : Full-Stack Developer
@rezajahangir 3 سال پیش مطرح شد
0

سلام مجدد به شما دوست عزیز.
بهترین دوست شما در زبان php، دستور dd هست و همیشه اگه برای دیباگ کردن از این دستور استفاده کنید میتونید به راحتی باگ هارو متوجه بشید، در کل هر وقت به چنین مشکلاتی بر میخورید سعی کنید خط به خط با دستور dd، مقادیر خودتون رو بررسی کنید تا متوجه بشید در هر مرحله داره چه اتفاقی میوفته.
موفق باشید.


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

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