ユーザーの連絡先を含むコレクションがあります。このコレクションの値を検索したいと思います。
$ itemCollection-> where( 'username'、$ search);を試しました。しかし、$ searchの値がusernameと完全に等しい場合にのみ表示されますが、その値も含む結果を取得したいと思います。
たとえば、ユーザー名として「yunus」の値があり、「yunus」を検索するとうまく機能しますが、「yun」または「y」の値も検索すると結果が表示されます。
私はそれを検索し、 'like'メソッドを使用する必要があることがわかりましたが、コレクションでは機能しないことがわかりました:(
検索したユーザー名の値を持つユーザーの連絡先を取得するための私の関数
public function index(Request $request)
{
$contacts = [];
$user = request()->user();
$search = $request->search;
Contact::for($user->id)
->orderBy('created_at', 'DESC')
->get()
->each(function ($contact) use ($user, &$contacts) {
$friend = $contact->user1_id === $user->id ? $contact->user2 : $contact->user1;
$contacts[] = $friend->toArray() + ['room' => $contact->room->toArray()];
});
$itemCollection = collect($contacts);
$filtered = $itemCollection->where('username', $search);
$filtered->all();
return response()->json($filtered);
}
結果:Json出力
filter()
代わりに使用してみてくださいwhere()
:
$itemCollection = collect($contacts);
$filtered = $itemCollection->filter(function($item) use ($search) {
return stripos($item['username'],$search) !== false;
});
この記事はインターネットから収集されたものであり、転載の際にはソースを示してください。
侵害の場合は、連絡してください[email protected]
コメントを追加