如何在laravel 5中强制对集合使用where子句

时间:2017-05-17 19:55:34

标签: laravel laravel-5

我有一张桌子正在进行搜索。富。我想检查一下搜索词是否像表中的一堆不同字段一样。但我希望结果被迫“活跃”。

我正在使用Laravel 5.0

var input = '';
var secretCode = 'abcdefg';

document.addEventListener('keydown', function(event) {
  input += String.fromCharCode(event.keyCode);
  if(input === secretCode) {
      alert('CODE ENTERED');
      window.location = "NEW WEB ADRESS"
  }
});

2 个答案:

答案 0 :(得分:0)

Collection有一个类似于查询构建器的where方法。

$activeFoos = $foos->where('active', true);

https://laravel.com/docs/5.4/collections#method-where

编辑: 我现在从评论中了解你的需求。尝试下面的代码,并注意我将您的原始$查询更改为$ find。所以记住这一点。

$foos = DB::table('foo')
    ->where('active', true)
    ->where(function ($query) use ($find) {
        $query->where('name', 'LIKE', "%{$find}%")
            ->orWhere('description', 'LIKE', "%{$find}%")
            ->orWhere('address_city', 'LIKE', "%{$find}%")
            ->orWhere('short_description', 'LIKE', "%{$find}%")
            ->orWhere('interview', 'LIKE', "%{$find}%");
    })
    ->get();

答案 1 :(得分:0)

active的值是真的还是真的(例如1的整数)?

对于松散的比较,您需要使用whereLoose('active', true),否则Laravel的方法,其中集合上的()将执行严格的类型比较。

就像Sandeesh所说,你需要删除get(),因为get()是一个查询构建器方法,Collections where()方法返回一个新的集合而不是一个构建器实例。