在 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)
。有时我们会感到困惑,我们需要在哪里提供 variable 和 db 列名。
【讨论】:
【参考方案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 的集合中找到?例子的主要内容,如果未能解决你的问题,请参考以下文章