1
0
mirror of https://github.com/flarum/core.git synced 2025-10-13 07:54:25 +02:00

Get rid of Repository interfaces

This commit is contained in:
Toby Zerner
2015-07-04 18:38:59 +09:30
parent f7b6d8a568
commit 86811c6508
43 changed files with 203 additions and 341 deletions

View File

@@ -0,0 +1,36 @@
<?php namespace Flarum\Core\Notifications;
use Flarum\Core\Users\User;
class NotificationRepository
{
/**
* Find a user's notifications.
*
* @param User $user
* @param int|null $limit
* @param int $offset
* @return \Illuminate\Database\Eloquent\Collection
*/
public function findByUser(User $user, $limit = null, $offset = 0)
{
$primaries = Notification::select(
app('flarum.db')->raw('MAX(id) AS id'),
app('flarum.db')->raw('SUM(is_read = 0) AS unread_count')
)
->where('user_id', $user->id)
->whereIn('type', $user->getAlertableNotificationTypes())
->where('is_deleted', false)
->groupBy('type', 'subject_id')
->latest('time')
->skip($offset)
->take($limit);
return Notification::with('subject')
->select('notifications.*', 'p.unread_count')
->mergeBindings($primaries->getQuery())
->join(app('flarum.db')->raw('('.$primaries->toSql().') p'), 'notifications.id', '=', 'p.id')
->latest('time')
->get();
}
}