#laravel
Вопрос:
Я хотел бы получить сумму столбца полиморфного отношения «многие ко многим». Итак, допустим, у вас есть пост и модель комментариев с такими отношениями, это не работает:
$posts = Post::withCount([
'comments as comments_priority_sum' => function ($q) {
$q->sum('comments.priority');
},
])
->orderBy('title', 'asc')
->get();
Ответ №1:
Начиная с laravel 8.x, у нас также есть метод withSum (), поэтому вы можете просто сделать:
Post::withSum('comments', 'priority')->get();
И вы получите поле comments_sum_priority в каждом экземпляре модели Post.
Для более старых версий вы можете использовать необработанное выражение:
Post::withCount(['comments as comments_sum_priority' => function($query) {
$query->select(DB::raw('sum(priority)'));
}])->get()
Просто для уточнения, ваш запрос не работает, потому что агрегат sum построителя запросов выполняет запрос.