Php Laravel查询生成器-其中(1=1)获取错误

Php Laravel查询生成器-其中(1=1)获取错误,php,laravel,laravel-4,laravel-5,query-builder,Php,Laravel,Laravel 4,Laravel 5,Query Builder,我正在尝试将此PHP MySQL查询构建到Laravel查询生成器: $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 W

我正在尝试将此PHP MySQL查询构建到Laravel查询生成器:

$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子句”中的1054未知列“1”

这是因为
where
方法的第一个参数应该是列名,并将被引用。因此,在您的情况下,当您:

$query = $baseQuery->where('1', '=', '1')
生成的SQL将是:

WHERE `1` = 1
因此,您应该使用
whereRaw
来避免任何引用:

$query = $baseQuery->whereRaw('1 = 1');

不需要
其中1=1
部分。没必要

此外,正如下面的注释所指出的,您希望使用
where
,而不是
或where


这是您的代码,经过大量清理:

$query=DB::table('employee')->选择('employee\u name','employee\u salary','employee\u position','employee\u city','employee\u extension','employee\u加入日期','employee\u age','employee\u id');
$filters=['EmployeeNameSeach'、'SalarySeach'、'PositionNameSeach'、'CitySeach'、'ExtensionSeach'、'JoiningDataSeach'、'AgeSeach'];
foreach($filters作为$filter){
如果(空($$filter))继续;
$query->where('employee_name'、'LIKE'、'%'。$$filter'%');
}
$query->orderBy($columns[$column\u index\u for\u ordering],$column\u ordering\u direction)
->跳过($start\u data\u index)
->取($每页\内容\编号);
$data=$query->get();

上面的代码使用
$$filter
作为循环通过过滤器的方法。我不知道这些过滤器是从哪里来的,但您可能应该将它们放在关联数组中。会让生活更轻松。

我相信他不需要使用
或where
,也不需要使用
语句。问题在查询中包含所有的
。@user3158900-无论哪种情况,都不需要
其中1=1
其中的
条件也应该使用
$$filter
:)。