2015-07-13 2 views
0

Я хочу, чтобы максимально 3 уведомления конкретного пользователя, непрочитано, а также дата их create_at ниже или равна определенной дате, я хочу что-то вроде сильфона запроса:Как написать этот запрос в laravel?

select count(*) as aggregate from 
(
    select * from `notifications` 
    where `notifications`.`user_id` = '20' and `notifications`.`user_id` is not null and `is_read` = '0' 
    and created_at <= '2015-07-12 11:41:10' limit 3 
) AS src 

просто мольбы рассмотреть сильфона запрос:

$displayedNotifications = $user->notifications(function($query) use ($timestamps) { 
        return $query->Where('created_at', '<=', $timestamps); 
       })->unread()->take(3)->count(); 

ответ

1

Привет @jones вы должны добавить метод области действия scopeUnread к Notification модели как:

function scopeUnread($query, $timestamp) { 
    $query->where('is_read', false); 

    if (! empty($timestamp)) 
    $query->where('created_at', '<=', $timestamp); 

    return $query; 
} 

теперь вы можете получить доступ к этой сфере от User модели, как показано ниже:

$user->notifications()->unread($timestamp); 

и

$user->notifications()->unread($timestamp)->take(3)->count(); 

Чтобы рассчитывать непрочитанные уведомления.

Надеюсь, он сработает для вас

Смежные вопросы