当前位置: 首页 > 面试题库 >

laravel高级搜索

韦熙云
2023-03-14
问题内容

我想进行一个高级搜索,其中用户要搜索可选参数,将来自三个表的数据连接如下

$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 ";

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

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查询生成器


问题答案:

我没有尝试过此代码,但它应在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

更新:

为了进行查询验证,您可以使用以下命令打印查询:

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

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

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



 类似资料:
  • 概况 Showcase 在线Demo见: http://vmap.phodal.com/ 或者你已经使用过了相应多的省市区与地图联动,但是这些联动往往是单向的、不可逆。并且这些数据往往都是在线使用的,不能离线使用。下图是一个结合百度地图的省市区与地图联动: 一般的省市区与地图联动 我们可以在这个应用里选择,相应的省市区然后地图会跳转到相应的地图。当我们在地图上漫游的时候,如果没有显示当前的省市区是

  • 我试图使用Spotify web API在一个响应中返回多个特定结果。 例如,也许我想要Spotify为迈克尔·杰克逊的《颤栗》和深紫的《公路之星》提供详细信息。 因为我还没有Spotify URI,所以我需要使用搜索方法。这里有一个页面描述了Spotify的高级搜索语法。它们支持针对特定字段(如曲目、艺术家和专辑)进行搜索。它们还支持基本的布尔运算符。 但是在那个页面上(或者在internet上

  • 第十章 “trait:定义共享的行为” 部分,我们第一次涉及到了 trait,不过就像生命周期一样,我们并没有覆盖一些较为高级的细节。现在我们更加了解 Rust 了,可以深入理解其本质了。 关联类型(associated types)是一个将类型占位符与 trait 相关联的方式,这样 trait 的方法签名中就可以使用这些占位符类型。trait 的实现者会针对特定的实现在这个类型的位置指定相应的

  • 本文向大家介绍基于layui实现高级搜索(筛选)功能,包括了基于layui实现高级搜索(筛选)功能的使用技巧和注意事项,需要的朋友参考一下 基于layui写的一个高级搜索(筛选)功能。 效果图: 是一位萌新,所有写的有点儿乱。(放在上面,供新手们参考,也是自己做一个记录。) 代码如下: 以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持呐喊教程。

  • 基础章节介绍了如何组织简单的 Redux 应用。在这一章节中,将要学习如何使用 AJAX 和路由。 异步 Action 异步数据流 Middleware 搭配 React Router 搭配 TypeScript 示例:Reddit API 下一步