Laravel whereIn 不 return 所有数据

Laravel whereIn doesn't return all data

我有以下数组(由 explode 方法创建)

["3D Printing"," 3D Architecture"," .NET Micro Framework"]

当我尝试将这些标题与我的数据库匹配并获取每个标题的 ID 时,我只获取第一个项目的 ID。

["d21c6805-8780-4726-ba1d-12c9c3a28d0a"]

它应该return像这样

["d21c6805-8780-4726-ba1d-12c9c3a28d0a", "1234...", "567...]

code

$a = $request->input('tags');
$b = str_replace(['[',']'], null, $a);
$comingTags = explode(',',$b);

$iddss = Tag::whereIn('title', $comingTags)->pluck('id');
return response()->json($iddss);

有什么建议吗?

PS:我最好的猜测是我的数组中的第 2 项和第 3 项有空格,这可能是导致问题的原因 "{SPACE IS HERE}3D Architecture" 不确定是否是这个原因。

更新

我试过了 $b = str_replace([',', ' '], ['',''], $a); 但我现在得到的只是 []

更新 2

通过使用 $b = str_replace(['[', ']', ' '], null, $a); 它确实从我的字符串中删除了空格,但也删除了我的标题单词之间的空格所以 3D Architecture 变成了 3DArchitecture 并且我也无法匹配我的数据库的标题在 $iddss = Tag::whereIn('title', $comingTags)->pluck('id'); 中,因为我的数据库标题是 3D Architecture 而我试图与之匹配的是 3DArchitecture.

有什么建议吗?

更新 3

$a = $request->input('tags');
// return 
"[3D Printing, 3D Architecture, .NET Micro Framework]"

.

$b = str_replace(['[',']'], null, $a);
// return
"3D Printing, 3D Architecture, .NET Micro Framework"

.

$comingTags = explode(',',$b);
// return
["3D Printing"," 3D Architecture"," .NET Micro Framework"]

要去掉空白,你可以这样做 array_map('trim', $a); (credits)

whereIn 需要一个数组,所以这应该可以工作

$a = $request->input('tags');
$b = str_replace(['[',']'], null, $a);
$comingTags = array_map('trim', explode(',', $b));

$iddss = Tag::whereIn('title', $comingTags)->pluck('id');

return response()->json($iddss);