Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/284.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 筛选特定列,如果匹配,则获取记录_Php_Mysql_Laravel_Laravel 5.2 - Fatal编程技术网

Php 筛选特定列,如果匹配,则获取记录

Php 筛选特定列,如果匹配,则获取记录,php,mysql,laravel,laravel-5.2,Php,Mysql,Laravel,Laravel 5.2,我在拉威尔5.2频道。如果与查询中的给定条件匹配,如何筛选特定列 例如,我有一张像这样的唱片 列[id]=>“1”,列[username]=>“id\U 45820”,列[contents]=> “测试”,列[to]=>“管理员,id_45820,用户”,列[created_at]=>”, 列[更新位置]=>“” 我有两个变量作为标准 $role = 'user'; $username = 'id_45820'; 现在,我想使用“$role”和“$username”变量过滤“to”列,如果“$

我在拉威尔5.2频道。如果与查询中的给定条件匹配,如何筛选特定列

例如,我有一张像这样的唱片

列[id]=>“1”,列[username]=>“id\U 45820”,列[contents]=> “测试”,列[to]=>“管理员,id_45820,用户”,列[created_at]=>”, 列[更新位置]=>“”

我有两个变量作为标准

$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();

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

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

$q = notifications::where(function($query) use($role, $username) {
    $query->where('to', 'like', "%{$role}%")
          ->orWhere('to', 'like', "%{$username}%");
})->get();
正如你所说的,你想检查其中一个或两个是否存在,那么你只需要检查其中一个是否存在


希望这有帮助

admin,id_45820,user
如何以逗号分隔存储?你是什么意思?我不太明白。存储起来很容易,因为“to”列是一个变量,所以在我的控制器中保存新记录时,我只需将它存储为一个字符串,这样它就由“roles and username”组成,用逗号分隔。@RossWilson的回答是正确的,但是像这样的
是一个非常昂贵的操作,所以我相信你应该考虑重新设计数据库。@Aleksejj你的意思是,使用“like”会消耗大量资源?@CodeDemon是的,这就是我的意思。为什么“{$role}%”与“{$username%}”不同,在“{$username%}”中,右“%”在“}”之前?@CodeDemon…打字错误。此外,请确保您使用的是
,而不是
。百分比和大括号的含义是什么?@CodeDemon
%
符号用于定义字符串前后的通配符(缺少字母),因此,删除第一个字段意味着字段必须以字符串开头,删除第二个字段意味着列必须以字符串结尾。结合使用
{}
来代替字符串连接。在上面的示例中,您实际上不需要
{}
它们,但是一些开发人员总是使用它们,因为这样更容易注意到正在发生的事情。
$q=notifications::where('to', 'like', '%' . $role . '%')
               ->orWhere('to', 'like', '%' . $user . '%')
               ->get();