Вы использовали неправильную конкатенацию строк для $sql
:
$sql=" SELECT email, date, min(time) AS checkedin, max(time) AS checkedout,( (TIME_TO_SEC(TIMEDIFF(max(time), min(time))) / 60) / 60) difference
FROM profile WHERE " . $cond . " GROUP BY email, date";
При использовании необработанного SQL ваш запрос будет уязвим для SQL-инъекций. Подробнее об этой проблеме .
Технически, вы могли бы использовать построитель запросов Laravels для обоих операторов.
$conditions = [];
if ($email) {
$conditions[] = ['email', 'like', $email];
}
$profile = DB::table('profile')
->select('user_id', 'email', 'status', 'date', 'time')
->where($conditions)
->get();
$previousData = DB::table('profile')
->select('email', 'date', DB:raw('min(time) checkedin'), DB:raw('max(time) checkedout'), DB::raw('((TIME_TO_SEC(TIMEDIFF(max(time), min(time))) / 60) / 60) difference'))
->where($conditions)
->groupBy('email', 'date')
->get();