【发布时间】:2020-12-23 06:06:20
【问题描述】:
我有一个索引有 16 个术语的数组,我需要 mysql 来查找与这 16 个术语或其中至少一个术语相关或对应的文章。
在 laravel 中没有“IN”,有“whereIn”,他只接受一个字符串,我无法创建一个包含 16 个术语的字符串,因为他不识别逗号,我使用的是 php 7.4并且容忍度似乎更低。我试图用implode()将数组转换成字符串,但它不起作用,它返回一个“将数组转换为字符串”错误,查看文档我发现了一些与集合相关的东西,但是,它不接受,它确实必须是一个字符串。我尝试使用 orWhere ,虽然它不返回错误,但它不显示结果并且需要很长时间来处理。 该数组是标准模型中的索引数组:
数组(['1', '2', '3' ...]);
除了条款,我还需要检查文章是否来自当前用户,这是有效的,记住数组及其内容是固定的,在控制器中。
$link = (['title', 'category', 'description', 'body', 'jobs', 'colors', 'phone', 'about', 'shopping', 'trade', 'costumers', 'author', 'online', 'cloud', 'technology', 'company']);
$linkt = My::where('id', $user->id)->whereIn($link);
或
$linkt = My::where('id', $user->id)->whereIn('from', 'LIKE', '%' . $link);
或
$test = implode(",", $link);
$linkt = My::where('id', $user->id)->whereIn($test);
这些东西不适合我。
【问题讨论】:
-
Laravel whereIn 接受一个数组...例如:
$users = DB::table('users') ->whereIn('id', [1, 2, 3]) ->get(); -
我不能包括整个控制器,但我会把搜索功能和数组放在问题中
-
whereIn的第一个参数需要是列名。您要匹配的值的第二个参数数组。
-
ParseError 语法错误,意外',' (whereIn('from', $link);) 没用,你觉得把数组放在whereIn()里面比较好?跨度>
-
即使把数组放在 whereIn() 里面也返回一个空数组 [],我有 10 个结果对应这些词,它们在一个文本中,在 from 列中,它们是不同的记录。
标签: php mysql arrays laravel eloquent