laravel - 检查数组的所有元素是否都在 Laravel 的 where 子句中的字符串中
问题描述
我有一个模型,它的字段type
由几个单词组成。字符串如下所示:modern premium hot
.
如果我想用这样的数组过滤它,如何获得相关结果:
$filter = [0 => 'modern', 1 => 'hot'];
$search = implode(' ', $filter);
$results = Model::where('type', $search)->get();
上面的例子不会返回任何东西,因为它会尝试匹配modern premium hot
和modern hot
它不一样,但是如何获得所有包含单词的相关结果,modern
同时hot
在type
字段中?
换句话说,如何获得在type
字段中包含数组的所有元素的所有结果,这是一个字符串?
解决方案
也许您需要像 Elastic Search 或 Algolia 这样的全文服务,或者甚至在您的数据库引擎上查看全文搜索(假设是 MySQL,请查看此链接)。
但如果你真的需要继续前进,你可以尝试这样的事情:
$query = Model::query();
foreach ($filter as $term) {
$query->orWhere('type', 'LIKE', "%{$term}%");
}
$results = $query->get();
推荐阅读
- python - 如果多个大文本文件太大而无法单独转换,如何将它们转换为一个 CSV 文件?
- javascript - 更新 vue 子组件中的 props 值
- cryptography - 如何使用同构变换函数和同构逆变换函数创建矩阵?
- flutter - Flutter - 物理键盘输入键在提交的文件上不起作用
- python - 匹配条件后如何更新/替换嵌套循环内的列表项?
- regex - 索引文档的正则表达式模式
- java - (Java)将元素附加到字符串数组中的字符串变量直到特定索引?
- c# - 如何获取 Random.Next() 的第 N 个实例?
- ansible - 编写自定义 Ansible 模块时类型 bool 的实现错误
- php - 从 WooCommerce 产品类别小部件中删除父类别和子类别