درود و سلام بر مهندسین عزیز🌹🌷 بنده می خوام جزئیات سفارش کاربر بعد این که پست شد براش پیامک ارسال کنم . اما یه مشکل دارم که کاربر دو تا محصول سفارش داده که هر محصول شامل یک price و یک title هست اما نمی دونم چطور به کاربر ارسال کنم؟!
این کد داخل کنترلر بنده
public function PostOrder(Order $order)
{
$order_product = collect($order->products()->get());
$order_product->each(function ($item) {
dd($item);
});
$user_phone = $order->phone;
//SEND SMS TO USER
$user = $order->user()->first();
$user->notify(new OrderStatus($user_phone,'اینجا نمی دونم مثلا تایتل های محصول رو چطور ارسال کنم؟'));
return back();
}
وقتی $item dd می گیرم فقط محصول اول برمیگردونه ولی وقتی
$order_product = collect($order->products()->get());
تست میگیرم دوتا ایتم که داخل هر کدوم یک محصول هست برمیگردونه
به جواب رسیدی؟
اگه نه همینطور که دوست عزیزمون @mehdi0121 گفت میتونی از pluck به صورت زیر استفاده کنی:
'price' => $order->products->get()->pluck('price'),
@milwad درود استفاده کردم اما دقیق نمیدونم چطور ستفاده کنم که خروجی بده میشه بگید چه کدی باید بزنم
سلام به شما دوست عزیز.
به صورت زیر بنوسید:
$details = [
'price' => $order->products->price,
];
$user->notify($user_phone, new OrderStatus($details));
@rezajahangir مهندس عزیز ممنون از راهنماییتون ولی مقتی dd میگیرم این ارور بر میگردونه.
Property [price] does not exist on this collection instance.
فیلد price هم بدرستی داخل جدول products وجود داره.
خدمت شما
public function up()
{
Schema::create('products', function (Blueprint $table) {
$table->id();
$table->unsignedBigInteger('user_id');
$table->foreign('user_id')->references('id')->on('users')->onDelete('cascade');
$table->string('title');
$table->string('slug');
$table->text('description');
$table->string('price');
$table->string('stock');
$table->string('image');
$table->string('kindofproduct');
$table->string('FakePrice')->nullable();
$table->string('TopProduct')->nullable();
$table->timestamps();
});
}
public function up()
{
Schema::create('orders', function (Blueprint $table) {
$table->id();
$table->unsignedBigInteger('user_id');
$table->foreign('user_id')->references('id')->on('users')->onDelete('cascade');
$table->integer('price');
$table->string('order_id')->unique();
$table->string('gateway')->nullable();
$table->string('phone');
$table->text('address');
$table->string('receiver');
$table->string('refid')->nullable();
$table->tinyInteger('status');
$table->timestamps();
});
Schema::create('order_product', function (Blueprint $table) {
$table->unsignedBigInteger('order_id');
$table->foreign('order_id')->references('id')->on('orders')->onDelete('cascade');
$table->unsignedBigInteger('product_id');
$table->foreign('product_id')->references('id')->on('products')->onDelete('cascade');
$table->primary(['order_id', 'product_id']);
$table->integer('price');
$table->integer('qty');
$table->timestamps();
});
}
مهندس به من این خروجی داد یعنی قیمت یکی از محصولات @rezajahangir
array:1 [▼
"price" => "900000"
]
@rezajahangir اینجا دارم کاربری که سفارش ثبت کرده پیدا می کنم که از طریق
$user->notify(new OrderStatusNotification());
بهش sms ارسال کنم.
اون که شما فرمودی محصولات ثبت شده این کاربر در جدول orders بود.
بفرمایید.
App\Models\User {#1722 ▼
#connection: "mysql"
#table: "users"
#primaryKey: "id"
#keyType: "int"
+incrementing: true
#with: []
#withCount: []
+preventsLazyLoading: false
#perPage: 15
+exists: true
+wasRecentlyCreated: false
#escapeWhenCastingToString: false
#attributes: array:17 [▼
"id" => 1
"name" => "AliKhan"
"email" => "AliKhan@gmail.co"
"phone" => null
"score" => 90
"is_supper_user" => 1
"user_image" => "/images/user/۲۰۲۱۰۱۲۰_۰۹۲۲۲۱.jpg"
"job" => "برنامه نویس وب - تریدر"
"last_seen" => "2022-04-23 19:55:33"
"flag" => 1
"email_verified_at" => "2022-04-03 20:12:50"
"password" => "$2y$10$UsrYOVDw12jMsKLQ/20XZedpeJIMVdspdZ5g7Bv0yHh5l8dkUDTQC"
"two_factor_secret" => null
"two_factor_recovery_codes" => null
"remember_token" => "awtcKbhEhiZobpiRJAOe1hlNWi2gciQ27kXcSmfw3YGzucDdBV6sQTDUMf3K"
"created_at" => "2022-04-10 23:36:41"
"updated_at" => "2022-04-23 19:55:33"
]
#original: array:17 [▶]
#changes: []
#casts: array:1 [▶]
#classCastCache: []
#attributeCastCache: []
#dates: []
#dateFormat: null
#appends: array:2 [▶]
#dispatchesEvents: []
#observables: []
#relations: []
#touches: []
+timestamps: true
#hidden: array:2 [▶]
#visible: []
#fillable: array:10 [▶]
#guarded: array:1 [▶]
#rememberTokenName: "remember_token"
#accessToken: null
@rezajahangir مهندس جان dd گرفتم اما مشکلی نداشت.
این کدی که شما فرمودید درسته ولی فقط محصول اول بر میگردونه
'price' => $order->products[0]->price,
وقتی من میگم
'price' => $order->products[1]->price,
محصول دوم بر میگردونه .
من می خوام که دیگه 0 و 1 بهش ندم.
به هر حال خیلی ممنون از وقت گرانبهایی که گذاشتید خیلی لطف کردید پایدار و سلامت باشید.😍😍🌺🌺🙏🙏
آره حواسم نبود بگم اونو تغیرش بدین من فقط خواستم ببین مقدار اولو برمیگردونه یا نه.
به این صورت بنویسید.
'price' => $order->products->first()->price,
یا
'price' => $order->products->get()->price,
@rezajahangir مهندس جان اون first که می گذارم همون قیمت اولی بر میگردونه ولی get که میزارم این ارور میده.
Too few arguments to function Illuminate\Support\Collection::get(), 0 passed in C:\Users\aseman\Desktop\AryaBMS\app\Http\Controllers\Admin\OrderController.php on line 42 and at least 1 expected
آیا مایل به ارسال نوتیفیکیشن و اخبار از طرف راکت هستید ؟