在 laravel 的集合中找到?例子

Posted

技术标签:

【中文标题】在 laravel 的集合中找到?例子【英文标题】:find in set in laravel ? example 【发布时间】:2016-06-06 06:55:03 【问题描述】:

我是 laravel 的新手。我的查询是我需要从逗号分隔的字段中找出值。

这是我的桌子:

tags_value

╔════╦══════════════╗
║ id ║     tags     ║
╠════╬══════════════╣
║  1 ║ css,html,php ║
║  2 ║ php,java,css ║
║  3 ║ java,c++,ios ║
╚════╩══════════════╝

这是我的 SQL 查询:

$query = DB::table('tags_value')
         ->whereRaw(FIND_IN_SET('css', Tags))
         ->get();

但它不起作用。

请帮我解决这个问题。 提前致谢。

【问题讨论】:

你有什么错误吗? 我收到此错误调用未定义函数 App\FIND_IN_SET() Laravel 认为您正在尝试调用一个名为 FIND_IN_SET() 的函数,但该函数并不存在。在引号中转义整个 whereRaw 子句。 【参考方案1】:

您需要使用引号转义对FIND_IN_SET() 的调用:

$query = DB::table('tags_value')
         ->whereRaw('FIND_IN_SET(css,Tags)')
         ->get();

如果您想参数化您在FIND_IN_SET 中搜索的列,那么您可以尝试这样的操作:

$colname = 'css'
$query = DB::table('tags_value')
         ->whereRaw('FIND_IN_SET(?,Tags)', [$colname])
         ->get();

【讨论】:

完美答案。只是一点点修正; 'css' 不是列名而是值 - 所以你在这里参数化值来参数化列使用 $colname = 'Tags' $query = DB::table('tags_value') ->whereRaw('FIND_IN_SET(css ,?)', [$colname]) ->get();【参考方案2】:

试试这个:

->whereRaw("FIND_IN_SET('css',tags)")

【讨论】:

【参考方案3】:
DB::table('tags_value')->whereRaw("find_in_set('php',tags)")....

请注意,在将 find_in_set()Laravel Eloquent 一起使用时,.find_in_set('.$tags.',columnName)。有时我们会感到困惑,我们需要在哪里提供 variabledb 列名

【讨论】:

【参考方案4】:

如何在 laravel 的 set 中使用 find 并将动态值传递给 eloquent。 100% 工作。

$restaurants = Restaurant::whereRaw('FIND_IN_SET("'.$request->code.'",restaurant_code)')->get();

【讨论】:

【参考方案5】:

这就是我的做法:

$value = '2';
Vendor::whereRaw('FIND_IN_SET("'.$value.'",service_industries)')->count();

【讨论】:

以上是关于在 laravel 的集合中找到?例子的主要内容,如果未能解决你的问题,请参考以下文章

Larave中CSRF攻击

手把手教你跑 Larave 框架实战笔记系列之一

laraver框架学习------工厂模型填充测试数据

Laravel session的保存机制

使用 Datatables 在 Laravel 中处理大量行的最佳方法是啥?

如何在子目录 Laravel 中正确配置 htaccess?