Здравствуйте, помогите пожалуйста по максимуму перенести мой запрос на Eloquent.
Сначала запрос был полностью "сырым", сейчас преобразовал его немного, но получилось не очень красиво.
#
$subscriptions = Subscription::where('user_id', \Auth::user()->id)->lists('entity_id')->toArray();
$views = View::where('user_id', \Auth::user()->id)->lists('post_id')->toArray();
if ($subscriptions) {
$entityIds = '(' . implode(', ', $subscriptions) . ')';
}
if ($views) {
$ids = '(' . implode(', ', $views) . ')';
}
$result = Entity::leftJoin('countries', 'countries.id', '=', 'entities.country_id')
->leftJoin('posts', function($join) use ($entityIds, $ids) {
if ($entityIds) {
$join->on('posts.entity_id', 'IN', \DB::raw($entityIds));
}
if ($ids) {
$join->on('posts.id', 'NOT IN', \DB::raw($ids));
}
})
->selectRaw('
entities.id,
entities.alias,
entities.type,
entities.name,
countries.iso_code_3 AS country,
count(posts.id) AS unwatched
')
->get()
->toArray();
Вся проблема в том, что изначально у меня был селект в джоине:
LEFT JOIN (
SELECT ....
) as Q2
В общем мне нужно посчитать количество записей из связанной таблицы.
Как можно упростить то, что у меня получилось?