Laravel中的两层条件查询

时间:2015-06-04 13:39:10

标签: php sql search eloquent laravel-5

我对Laravel来说有些新鲜,并且一直在搜索文档,并且没有找到符合我需要的答案。

我试图在产品数据库上运行灵活的搜索查询。

因此人们可以按名称或搜索进行搜索。但是不能把某些领域留空。

因此,当输入为空时,我只需将其替换为"否(字段)输入"。

我的搜索查询必须首先检查该字段是否为空,如果不是,则需要按给定的参数进行过滤。

我正在做的快速SQL表示就是这个。

$results = DB::connection('sqlsrv')->select("SELECT TOP 500 * from dbo.SimpleOrderView 
WHERE ('". $name ."' = 'NoNameEntered' OR Name LIKE '%". $name ."%') 
AND ('". $sku ."' = 'NoSkuEntered' OR Sku LIKE '%". $sku ."%') 
AND ('". $description ."' = 'NoDescriptionEntered' OR ShortDescription LIKE '%". $description ."%')");

所以查询很乱,但按预期工作。我想用Eloquent来清理它并使它按照预期的方式运行。

提前致谢。

1 个答案:

答案 0 :(得分:0)

public function search(Request $request)
{
    $inputs = $request->only('name', 'sku', 'description');
    $query = Class:take(500);

    foreach ($inputs as $key => $value)
    {
      $new_key = ucfirst($key);
      $new_value = "%{$value}%";
      if (empty($input))
          $query->where("No{$new_key}Entered", 'like', $new_value);
      else
          $query->where($new_key, $new_value);
    }

    return $query->get();
}

这应该可以解决问题

相关问题