سلام
براي نمايش نمودار تغييرات قيمت يك محصول اين نمودار كه سمت فرانت بايد ساخته شه كه باهاش كاري نداريم.
در سمت بك اند قضيه با لاراول و ديتابيس mysql بايد يك جدول تغيير قسمت بسازيم و وصلش كنيم به جدول محصول
خب ما از updated_at در ديتابيس يكبار ميتونيم استفاده كنيم پس چطوري تغييرات قيمت محصول مثلاً در ١٠ روز رو بگيريم و با api به فرانت بديم تا تو نمودار نشونش بده؟
تشكر
سلام. updated_at
فقط تاریخ ویرایش یک رکورد رو قراره نگهداری کنه. برای ثبت تغییرات باید به ازای هر قیمت یه رکورد جدید داشته باشین. بعد کوئری میزنین بر اساس created_at
. البته نمیدونم دیجیکالا و بقیه چیکار میکنن، شاید اونها تغییرات رو به صورت دیگهای ذخیره کنن.
سلام
شما یک جدول مخصوص price ایجاد کنید که یه رابطه one to many با جدول product داشته باشه. داخل هر سطر این جدول براساس تاریخ created_at می تونید اطلاعات رو ذخیره کنید و بر این اساس اطلاعات را بر گردونید. به نظرم برای اینکه سرعت دسترسی اطلاعات برای نمایش به مشتری بالاتر بره و ارتباط بین جدولی به وجود نیاد می تونید اخرین قیمت رو داخل product همیشه داشته باشید.
@arminbeik
شما برای این مشکل دو راه حل دارین در روش اول شما می تونید هنگام آپدیت یک رکورد در پایگاه داده ایجاد کنید من برای لاگ گرفتن از همه تغییرات ایگاه داده این کار رو انجام دادم کاری که انجام باید بدین مانند کد زیر هست
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 نیست و خارج از لاراول هست.
آیا مایل به ارسال نوتیفیکیشن و اخبار از طرف راکت هستید ؟