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);
我有以下数组(由 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);