как использовать MIN и MAX SQL-запрос в Laravel Eloquent - PullRequest
2 голосов
/ 05 апреля 2019

я хочу использовать min и max laravel elaquent в одной строке, это возможно?

Appointmentsetting::where('Day','=',1)
->whereIn('PersonID', function ($query) {
    $query->select('p.id')
        ->from('users as p')
        ->join('appointmentsettings as aps', 'aps.PersonID', '=', 'p.id')
        ->where('p.active', '=', 1)
        ->where('aps.CompanyID', '=', 1)
        ->orWhereIn('aps.PersonID', function ($query2) {
            $query2->select('cps.user_id')
                    ->from('companypersonstructs as cps')
                    ->where('cps.CompanyID', '=', 1);
        })
        ->groupBy('aps.PersonID');
})
->where('active', '=', 1)
->select(\DB::raw("SELECT MIN(StartFrom) AS StartFrom, MAX(EndTo) AS EndTo"));
->get();

я получил ошибку

SQLSTATE [42000]: синтаксическая ошибка или нарушение прав доступа: 1064 У вас есть ошибка в вашем синтаксисе SQL; проверьте руководство, которое соответствует вашему Версия сервера MariaDB для правильного синтаксиса для использования рядом с 'SELECT MIN (StartFrom) AS StartFrom, MAX (EndTo) AS EndTo от назначение встречи в строке 1

Ответы [ 2 ]

2 голосов
/ 05 апреля 2019
->selectRaw(" MIN(StartFrom) AS StartFrom, MAX(EndTo) AS EndTo");

пожалуйста, поставьте запрос выше и попробуйте.Основная проблема в вашем запросе заключается в том, что вы используете select два раза, когда нет необходимости писать select select внутри select или selectRaw для получения дополнительной информации о необработанном запросе нажмите здесь

2 голосов
/ 05 апреля 2019
Appointmentsetting::where('Day','=',1)
->whereIn('PersonID', function ($query) {
    $query->select('p.id')
        ->from('users as p')
        ->join('appointmentsettings as aps', 'aps.PersonID', '=', 'p.id')
        ->where('p.active', '=', 1)
        ->where('aps.CompanyID', '=', 1)
        ->orWhereIn('aps.PersonID', function ($query2) {
            $query2->select('cps.user_id')
                    ->from('companypersonstructs as cps')
                    ->where('cps.CompanyID', '=', 1);
        })
        ->groupBy('aps.PersonID');
})
->where('active', '=', 1)
->select(\DB::raw("MIN(StartFrom) AS StartFrom, MAX(EndTo) AS EndTo"));
->get();
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...