راکت
حل شده

نمایش تعداد مقاله های ثبت شده در این ماه در لاراول

7 پاسخ

سلام دوستان روزتون بخیر
در لارول چطوری میشه مقاله هایی که در ماه جاری ثبت شده رو گرفت؟
با استفاده از ستون created_at
ممنون

ثبت پرسش جدید

پاسخ‌ها

7
علی بیات
علی بیات
@ali.bayat

تخصص: توسعه دهنده ارشد وب

بهترین پاسخ

این کوئری:

Article::whereMonth('created_at', '=', Carbon::now()->month)->count()

داره میگه تعداد مقالات این ماه رو برگردون.. اما سالش اهمیت نداره... میشه مقالاتی که در سپتامبر نوشته شدند
به این ترتیب نکات زیر رو داریم:

  • سال بعد همین موقع ، این کوئری مقالات سپتامبر سال جدید و سپتامبر سال قبل رو جمع میکنه و برمیگردونه.
  • مثلا الان حدودا ۹ سپتامبر هست و با این کوئری شما تعداد مقالات ۹ روز پیش رو میگیری و نه ۳۰ روی پیش.
  • حتی اگر از whereYear هم در کنارش استفاده کنی باز هم مشکل ۹ روز پیش رو داری.

اگر قصدت شمارش مقالات از اول هر ماه هست: از whereMonth و whereYear استفاده کن
اگر قصدت شمارش مقالات ۳۰ روز گذشته هست: از whereDate استفاده کن

coarad supp
coarad supp
@coaradsupp

تخصص: برنامه نویس لاراول

سلام

Article::whereMonth('created_at', '=', Carbon::now()->subMonth()->month)->get(['name','created_at']);

https://www.tutsmake.com/laravel-get-record-last-week-month-15-days-year/#:~:text=If%20you%20want%20to%20get,whereMonth()%20and%20get().

علی بیات
علی بیات
@ali.bayat

تخصص: توسعه دهنده ارشد وب

از متد whereMonth که دوستمون گفت میتونی استفاده کنی..
همچنین از متد whereDate هم میتونی استفاده کنی:

$articles = Article::latest()
    ->whereDate(
        'created_at', 
        '>',
        \Carbon\Carbon::now()->subMonth())
    ->get();

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

حسین شیری نژاد
حسین شیری نژاد
@hosseinshirinegad98

تخصص: programmer

سلام دستوری که شما نوشتین تا حدودی نادرست است ما باید تاریخ کامل رو چک کنیم. در دستور شما اگر ما چند سال با ماهای یکسان داشته باشیم دستور کوئری شما همه مقاله های اون سال هارو میاره که ایشون مقاله های سال جاری و ماه جاری رو میخواستن بعد متد subMonth که اشاره به ماه قبلی دارن.

Article::whereYear('created_at', '=', Carbon::now()->year)
    ->whereMonth('created_at', '=', Carbon::now()->month)
    ->get(['name','created_at']);

@coaradsupp

حسین شیری نژاد
حسین شیری نژاد
@hosseinshirinegad98

تخصص: programmer

ممنونم از دستور خوبی که معرفی کردین
@ali.bayat

حسین صادقی
حسین صادقی
@Hossein.sadeGHi

@ali.bayat

Article::whereMonth('created_at', '=', Carbon::now()->month)->count()

سلام اگر به این صورت بنویسم بعدا مشکلی که بوجود نمیاد؟

woz
woz
@wozniak

تخصص: fan of open source world

@Hossein.sadeGHi
اگر بخواهید کمی بهینه تر بشه میشه از این هم استفاده کرد :

->whereRaw("date_add(created_at, INTERVAL 1 MONTH) > NOW()")
or
->whereRaw("date_add(created_at, INTERVAL 30 DAY) > NOW()")

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

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