علیرضا مه آبادی
3 سال پیش توسط علیرضا مه آبادی مطرح شد
24 پاسخ

نحوه ارسال جزئیات محصول داخل متد notify در لاراول

درود و سلام بر مهندسین عزیز🌹🌷 بنده می خوام جزئیات سفارش کاربر بعد این که پست شد براش پیامک ارسال کنم . اما یه مشکل دارم که کاربر دو تا محصول سفارش داده که هر محصول شامل یک 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());

تست میگیرم دوتا ایتم که داخل هر کدوم یک محصول هست برمیگردونه


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

به جواب رسیدی؟
اگه نه همینطور که دوست عزیزمون @mehdi0121 گفت میتونی از pluck به صورت زیر استفاده کنی:

'price' => $order->products->get()->pluck('price'),

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

سلام خسته نباشید
از foreach استفاده کردی؟


علیرضا مه آبادی
تخصص : در حال یادگیری لاراول
@aliasgharkashani1379 3 سال پیش مطرح شد
0

@milwad درود استفاده کردم اما دقیق نمیدونم چطور ستفاده کنم که خروجی بده میشه بگید چه کدی باید بزنم


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

سلام به شما دوست عزیز.
به صورت زیر بنوسید:

$details = [
    'price' => $order->products->price,
];
$user->notify($user_phone, new OrderStatus($details));

علیرضا مه آبادی
تخصص : در حال یادگیری لاراول
@aliasgharkashani1379 3 سال پیش مطرح شد
0

@rezajahangir مهندس عزیز ممنون از راهنماییتون ولی مقتی dd میگیرم این ارور بر میگردونه.

Property [price] does not exist on this collection instance.

فیلد price هم بدرستی داخل جدول products وجود داره.


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

به صورت زیر امتحان کنید.

'price' => $order->products['price'],

علیرضا مه آبادی
تخصص : در حال یادگیری لاراول
@aliasgharkashani1379 3 سال پیش مطرح شد
0

@rezajahangir این ارور میده.

Undefined array key "price"

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

مایگریشن orders و prodcuts رو بفرستید.


علیرضا مه آبادی
تخصص : در حال یادگیری لاراول
@aliasgharkashani1379 3 سال پیش مطرح شد
0

خدمت شما

 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();
        });

    }

رضا جهانگیر
تخصص : Full-Stack Developer
@rezajahangir 3 سال پیش مطرح شد
1
'price' => $order->products[0]->price,

علیرضا مه آبادی
تخصص : در حال یادگیری لاراول
@aliasgharkashani1379 3 سال پیش مطرح شد
0

مهندس به من این خروجی داد یعنی قیمت یکی از محصولات @rezajahangir

array:1 [▼
  "price" => "900000"
]

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

چند تا محصول باید برگردونه و الان چندومی رو برگردوند؟


علیرضا مه آبادی
تخصص : در حال یادگیری لاراول
@aliasgharkashani1379 3 سال پیش مطرح شد
0

@rezajahangir دوتا محصول ثبت شده که اولی برگردوند.


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

خب شما اینجا داری فقط اولی رو برمیگردونی

$user = $order->user()->first();

علیرضا مه آبادی
تخصص : در حال یادگیری لاراول
@aliasgharkashani1379 3 سال پیش آپدیت شد
0

@rezajahangir اینجا دارم کاربری که سفارش ثبت کرده پیدا می کنم که از طریق


 $user->notify(new OrderStatusNotification());

بهش sms ارسال کنم.
اون که شما فرمودی محصولات ثبت شده این کاربر در جدول orders بود.


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

خروجی اینو بفرست

$user = $order->user()->first();

علیرضا مه آبادی
تخصص : در حال یادگیری لاراول
@aliasgharkashani1379 3 سال پیش مطرح شد
0

بفرمایید.

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

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

مرحله به مرحله dd بگیر ببین کجا اطلاعات مشکل داره


علیرضا مه آبادی
تخصص : در حال یادگیری لاراول
@aliasgharkashani1379 3 سال پیش مطرح شد
0

@rezajahangir مهندس جان dd گرفتم اما مشکلی نداشت.
این کدی که شما فرمودید درسته ولی فقط محصول اول بر میگردونه

'price' => $order->products[0]->price,

وقتی من میگم

'price' => $order->products[1]->price,

محصول دوم بر میگردونه .
من می خوام که دیگه 0 و 1 بهش ندم.

به هر حال خیلی ممنون از وقت گرانبهایی که گذاشتید خیلی لطف کردید پایدار و سلامت باشید.😍😍🌺🌺🙏🙏


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

آره حواسم نبود بگم اونو تغیرش بدین من فقط خواستم ببین مقدار اولو برمیگردونه یا نه.
به این صورت بنویسید.

'price' => $order->products->first()->price,

یا

'price' => $order->products->get()->price,

علیرضا مه آبادی
تخصص : در حال یادگیری لاراول
@aliasgharkashani1379 3 سال پیش مطرح شد
0

@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

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

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