Я пытаюсь построить этот PHP MySQL запрос на Laravel Query Builder:Laravel Query Builder - где (1 = 1) получение ошибки
$sql = "SELECT employee_name, employee_salary, employee_position, employee_city, employee_extension, DATE_FORMAT(employee_joining_date, '%Y-%m-%d') as employee_joining_date, employee_age ";
$sql .= " FROM employee WHERE 1=1";
if (!empty($EmployeeNameSeach)) {
$sql .=" AND employee_name LIKE '".$EmployeeNameSeach."%' ";
}
if (!empty($SalarySeach)) {
$sql .= " AND employee_salary LIKE '".$SalarySeach."%' ";
}
if (!empty($PositionNameSeach)) {
$sql .= " AND employee_position LIKE '".$PositionNameSeach."%' ";
}
if (!empty($CitySeach)) {
$sql .= " AND employee_city LIKE '".$CitySeach."%' ";
}
if (!empty($ExtensionSeach)) {
$sql .= " AND employee_extension LIKE '".$ExtensionSeach."%' ";
}
if (!empty($JoiningDataSeach)) {
$sql .= " AND employee_joining_date LIKE '".$JoiningDataSeach."%' ";
}
if (!empty($AgeSeach)) {
$sql .= " AND employee_age LIKE '".$AgeSeach."%' ";
}
И что я делаю -
$baseQuery = DB::table('employee')->select('employee_name', 'employee_salary', 'employee_position', 'employee_city', 'employee_extension',"employee_joining_date", 'employee_age', 'employee_id');
//->select('name as user_name', 'email')
//Applying Filters
$query = $baseQuery->where(1, '=', 1);
if(!empty($EmployeeNameSeach))
$query = $query->orWhere('employee_name', 'LIKE', '%'.$EmployeeNameSeach.'%');
if(!empty($SalarySeach))
$query = $query->orWhere('employee_name', 'LIKE', '%'.$SalarySeach.'%');
if(!empty($PositionNameSeach))
$query = $query->orWhere('employee_name', 'LIKE', '%'.$PositionNameSeach.'%');
if(!empty($CitySeach))
$query = $query->orWhere('employee_name', 'LIKE', '%'.$CitySeach.'%');
if(!empty($ExtensionSeach))
$query = $query->orWhere('employee_name', 'LIKE', '%'.$ExtensionSeach.'%');
if(!empty($JoiningDataSeach))
$query = $query->orWhere('employee_name', 'LIKE', '%'.$JoiningDataSeach.'%');
if(!empty($AgeSeach))
$query = $query->orWhere('employee_name', 'LIKE', '%'.$AgeSeach.'%');
//Ordering and Limiting Current data
$query = $query->orderBy($columns[$column_index_for_ordering], $column_ordering_direction)
->skip($start_data_index)->take($per_page_content_number);
$data = $query->get();
Поэтому я получаю ошибку для-
$query = $baseQuery->where(1, '=', 1);
Может ли кто-нибудь мне помочь? Спасибо.
Я считаю, что ему не нужно использовать 'илиWhere', а также инструкцию' или'. Вопрос имеет все 'и' в запросе. – user3158900
@ user3158900 - В любом случае, нет необходимости в 'WHERE 1 = 1'. –
Условие 'where' должно также использовать' $$ filter' :). – Bogdan