laravel高级搜索 [英] laravel advanced search

查看:101
本文介绍了laravel高级搜索的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我想进行高级搜索,其中用户可以搜索可选参数,并按如下方式加入来自三个表的数据

I want to make an advanced search in which the user has optional parameters to search,am joining data from three tables as follows

$qry="SELECT rooms.*, salereservation.*, customers.*
                FROM rooms
                    JOIN salereservation
                        ON salereservation.room_id = rooms.room_id
                    JOIN customers
                        ON customers.id = salereservation.customer_id
                WHERE salereservation.sale_status=1 AND ";

我将如下所示的可选参数附加到查询字符串中

i am appending to the query string the optional parameters as follows

if($fname!=''){
        $qry.="fname LIKE %fname% AND ";
    }
    if($lname!=''){
        $qry.="lname LIKE %:lname% AND ";
    }
    if($time_in!=''){
        $qry.="start_datetime LIKE %time_in% AND ";
    }
    if($time_out!=''){
        $qry.="end_datetime LIKE %time_out% AND ";
    }
    if($phone!=''){
        $qry.="phone LIKE %phone% AND ";
    }
    if($room_no!=''){
        $qry.="room_no LIKE %room_no%";
    }

我的问题是如何将代码转换为laravel查询生成器

my problem is how to turn the code into laravel query builder

推荐答案

我没有尝试过此代码,但它应在laravel 4.2下工作.

I didn't try this code but its should work under laravel 4.2.

$query = DB::table('rooms')
        ->join("salereservation", "salereservation.room_id", "=", "rooms.room_id")
        ->join("customers", "customers.id", "=", "salereservation.customer_id")
        ->where("salereservation.sale_status",'=',1)
        ->select('rooms.*', 'salereservation.*', 'customers.*');

if($fname!=''){
    $query->where("fname",'like',"%$fname%");
}

if($lname!=''){
    $query->where("lname",'like',"%$lname%");
}
if($time_in!=''){
   $query->where("start_datetime",'like',"%$time_in%");
}
if($time_out!=''){
    $query->where("end_datetime",'like',"%$time_out%");
}
if($phone!=''){
    $query->where("phone",'like',"%$phone%");
}
if($room_no!=''){
  $query->where("room_no",'like',"%$room_no%");
}
$data = $query->get(); //finally get the result

更新:

对于查询验证,您可以使用以下命令打印查询:

For query verification you can print your query using:

 $queries = DB::getQueryLog();
 $last_query = end($queries);
 dd($last_query);

并验证您的查询是否与所需查询不同. 如果事情有所不同,我们可以根据它们升级查询结构,也可以使用从laravel方法生成的最新查询进行更新.

And verify if your query different from your desired query. If something went to different we can upgrade our query structure according to them.and also can you update with your latest query generated from laravel methods.

但是如果您仍然难以理解我的观点.让我知道.

But if you still face some difficulties to understand my point of view. let me know.

这篇关于laravel高级搜索的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆