Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/mysql/70.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
具有多个选项的PHP Laravel复杂查询_Php_Mysql_Optimization_Laravel_Eloquent - Fatal编程技术网

具有多个选项的PHP Laravel复杂查询

具有多个选项的PHP Laravel复杂查询,php,mysql,optimization,laravel,eloquent,Php,Mysql,Optimization,Laravel,Eloquent,我有一个包含4个字段的搜索表单: 头衔 流派->(单独查询以获取和查找流派) 评级 Order by->(包括在所有查询中) 我正在尝试优化搜索功能,因为它大约有300行长。我所做的是写出所有可能的组合——应该包含在查询中的内容 if ( empty($title) && $genre === 'All' && $rating === '0') {} if (!empty($title) && $genre === 'All' &&

我有一个包含4个字段的搜索表单:

  • 头衔
  • 流派->(单独查询以获取和查找流派)
  • 评级
  • Order by->(包括在所有查询中)
  • 我正在尝试优化搜索功能,因为它大约有300行长。我所做的是写出所有可能的组合——应该包含在查询中的内容

    if ( empty($title) && $genre === 'All' && $rating === '0') {}
    if (!empty($title) && $genre === 'All' && $rating === '0') {}
    

    有8种可能的组合,我不知道如何优化

    我想我找到了一个非常好的解决方案,这也使得添加额外的标准变得轻而易举

    我不知道你的类名是什么,所以我假设你有一张书桌和一本模型书

    下面是我在快速测试台上设置的东西

    $books = new Book;
    
    if(!empty($title))
        $books = $books->where('title','=',$title);
    
    if(!empty($genre))
        $books = $books->where('genre','=',$genre);
    
    if(!empty($rating))
        $books = $books->where('rating','=',$rating);
    
    $books = $books->get();