【问题标题】:PHP Laravel complex query with multiple options具有多个选项的 PHP Laravel 复杂查询
【发布时间】:2013-07-18 01:20:55
【问题描述】:
我有一个包含 4 个字段的搜索表单:
- 标题
- 流派 ->(单独查询以查找流派)
- 评分
- Order by ->(包含在所有查询中)
我正在尝试优化搜索功能,因为它大约有 300 行长。我所做的是写出所有可能的组合 - 应该包含在查询中。
if ( empty($title) && $genre === 'All' && $rating === '0') {}
if (!empty($title) && $genre === 'All' && $rating === '0') {}
有 8 种可能的组合,我不知道如何优化它。
【问题讨论】:
标签:
php
mysql
optimization
laravel
eloquent
【解决方案1】:
我想我找到了一个非常好的解决方案,它还可以让添加额外的标准变得轻而易举。
我不知道你的班级名称是什么,所以我假设你有一个书架和一个模型书。
所以在我设置的快速测试表上,这似乎对我有用。
$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();