Reputation: 1424
i want to use min
and max
laravel elaquent at the same line, is that posible?
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();
i got error
SQLSTATE[42000]: Syntax error or access violation: 1064 You have an error in your SQL syntax; check the manual that corresponds to your MariaDB server version for the right syntax to use near 'SELECT MIN(StartFrom) AS StartFrom, MAX(EndTo) AS EndTo from `appointmentsetting' at line 1
Upvotes: 2
Views: 18806
Reputation: 1698
->selectRaw(" MIN(StartFrom) AS StartFrom, MAX(EndTo) AS EndTo");
please put above query and try. the main problem in your query is you are using select two time there is no need for write select inside select or selectRaw for more about raw query click here
Upvotes: 7
Reputation: 501
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();
Upvotes: 2