راکت

نمايش نمودار تغييرات قيمت در لاراول

3 پاسخ

سلام
براي نمايش نمودار تغييرات قيمت يك محصول اين نمودار كه سمت فرانت بايد ساخته شه كه باهاش كاري نداريم.
در سمت بك اند قضيه با لاراول و ديتابيس mysql بايد يك جدول تغيير قسمت بسازيم و وصلش كنيم به جدول محصول
خب ما از updated_at در ديتابيس يكبار ميتونيم استفاده كنيم پس چطوري تغييرات قيمت محصول مثلاً در ١٠ روز رو بگيريم و با api به فرانت بديم تا تو نمودار نشونش بده؟
تشكر

آرمین
آرمین
@arminbeik
ثبت پرسش جدید

پاسخ‌ها

3
Muhammad
Muhammad
@muhammad

تخصص: Back-End Developer

سلام. updated_at فقط تاریخ ویرایش یک رکورد رو قراره نگه‌داری کنه. برای ثبت تغییرات باید به ازای هر قیمت یه رکورد جدید داشته باشین. بعد کوئری می‌زنین بر اساس created_at . البته نمی‌دونم دیجی‌کالا و بقیه چیکار می‌کنن، شاید اونها تغییرات رو به صورت دیگه‌ای ذخیره کنن.

moha li
moha li
@mohaligateway

تخصص: توسعه دهنده لاراول و Vue

سلام
شما یک جدول مخصوص price ایجاد کنید که یه رابطه one to many با جدول product داشته باشه. داخل هر سطر این جدول براساس تاریخ created_at می تونید اطلاعات رو ذخیره کنید و بر این اساس اطلاعات را بر گردونید. به نظرم برای اینکه سرعت دسترسی اطلاعات برای نمایش به مشتری بالاتر بره و ارتباط بین جدولی به وجود نیاد می تونید اخرین قیمت رو داخل product همیشه داشته باشید.
@arminbeik

شاید پاسخ شما همین‌جا باشد

Mohsen Etmd
Mohsen Etmd
@mohsenetmd

شما برای این مشکل دو راه حل دارین در روش اول شما می تونید هنگام آپدیت یک رکورد در پایگاه داده ایجاد کنید من برای لاگ گرفتن از همه تغییرات ایگاه داده این کار رو انجام دادم کاری که انجام باید بدین مانند کد زیر هست

        static::updating(function ($model){
            LogDatabase::create([
                "model" => static::class,
                "reference_id" => $model->id,
                "user_panel_id" => Auth::guard("user_panel")->check() ? Auth::guard("user_panel")->user()->user_id : 0,
                "user_id" => Auth::guard("api")->check() ? Auth::guard("api")->user()->user_id : 0,
                "type" => "update",
                "data" => json_encode($model),
            ]);

من در اینجا همه تغییرات آپدیت در همه مدل ها رو ذخیره می کنم شما می تونید فقط تغییرات قیمت رو ذخیره کنید.
روش دیگر هم استفاده از trigger function mysql است از این روش هم من استفاده کردم جفتشون یک سری مزایا و معایب دارن تریگر فانکشن به نظر من بهتره ولی مشکلی که داره این هست که کد php نیست و خارج از لاراول هست.

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

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