سلام و خسته نباشید
من یه سری اطلاعات دارم برای سفارشم که میخوام ویرایشش کنم
همه چیز ویرایش میشه تا جایی ک میبینم ب جز یک فیلد ک خیلی عجیبه برام (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
مرسی از همه ی دوستانی که مشارکت کردن
اشتباه از خود بنده بود و سهل انگاری کردم
دستور 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
سلام مجدد به شما دوست عزیز.
بهترین دوست شما در زبان php، دستور dd هست و همیشه اگه برای دیباگ کردن از این دستور استفاده کنید میتونید به راحتی باگ هارو متوجه بشید، در کل هر وقت به چنین مشکلاتی بر میخورید سعی کنید خط به خط با دستور dd، مقادیر خودتون رو بررسی کنید تا متوجه بشید در هر مرحله داره چه اتفاقی میوفته.
موفق باشید.
آیا مایل به ارسال نوتیفیکیشن و اخبار از طرف راکت هستید ؟