过滤特定列,如果匹配则获取记录

时间:2016-10-25 07:12:55

标签: php mysql laravel laravel-5.2

我在Laravel 5.2上。如果匹配查询的给定条件,如何筛选特定列?

例如我有一个像

这样的记录
  

column [id] => '1',列[用户名] => 'id_45820',列[内容] =>   'test',列[to] => 'admin,id_45820,user',列[created_at] => ',   专栏[updated_at] => ''

我有2个变量作为标准

$role = 'user';
$username = 'id_45820';

现在我想要使用'$ role'和'$ username'变量来过滤'to'列,如果'$ role'或'$ username'或两者都匹配'to'的内容'列(用逗号分隔)然后拉那条记录,这可能吗?

$q = notifications::where(function($query){
    //I just don't know how to do it. Help please?
})->get();

2 个答案:

答案 0 :(得分:1)

如果我正确理解你的问题,那么:

$role = 'user';
$username = 'id_45820';

$q = notifications::where(function($query) use($role, $username) {
    $query->where('to', 'like', "%{$role}%")
          ->orWhere('to', 'like', "%{$username}%");
})->get();

正如您所说,您想要检查是否存在其中一种或两种,那么您只需要检查是否存在。

希望这有帮助!

答案 1 :(得分:1)

$q=notifications::where('to', 'like', '%' . $role . '%')
               ->orWhere('to', 'like', '%' . $user . '%')
               ->get();