Я хочу использовать несколько таблиц в разделах Advanced Join - PullRequest
0 голосов
/ 15 октября 2018

Мне нужна помощь по моему запросу.Я использую несколько таблиц с расширенными предложениями объединения, но он показывает неверное число, и обе имеют одно и то же значение:

$parents = DB::table('users')
            ->select('users.id','users.full_name', 'users.email', 'users.avatar', 'users.signup_date', (DB::raw('count(children.id) as children_no')), (DB::raw('count(invitations.id) as invitations_no')))
            ->leftJoin('children', function ($join) {
                $join->on('users.id', '=', 'children.userid')
                ->where('children.is_deleted', '=', 0);
            })
            ->leftJoin('invitations', function ($join) {
                $join->on('users.id', '=', 'invitations.user_id')
                ->where('invitations.is_deleted', '=', 0);
            })
            ->where('users.is_admin', '=', 0)
            ->groupBy('users.id')
            ->get();

1 Ответ

0 голосов
/ 15 октября 2018

Я думаю, что вы можете решить эту проблему с помощью базовых отношений в Laravel + мягкие удаления в таблице приглашений и детей.

Это сделает ваш запрос менее сложным, и вы получите преимущества Laravel.

<?php

$users = User::where('is_admin', false)
    ->has(['invitations', 'children'])
    ->withCount(['invitations', 'children'])
    ->get();

Это выберет всех без администраторов, с приглашениями и детьми.Удостоверьтесь, что у вас есть мягкое удаление настроек для детей и приглашений.WithCount добавит счетчик для связанных отношений.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...