Tìm kiếm First Name và Last Name trong Laravel Query ?

    Có nhiều dự án thực tế ở màn hình tìm kiếm sẽ có một box tìm kiếm để nhập user name và khi nhập user name thì sẽ tìm kiếm tất cả các users có trường firt name hoặc last name giống với text tìm kiếm nhập vào ô tìm kiếm.
Trong bài biết này mình sẽ chia sẻ 3 cách để tìm kiếm first name hoặc last name trong laravel version 6 trở lên nhé.

    Ví dụ 1:

    Hãy update code vào controller như bên dưới nhé.
app/Http/Controller/UserController

<?php

namespace App\Http\Controllers;

use Illuminate\Http\Request;
use App\Models\User;
use DB;

class UserController extends Controller
{
    /**
     * Write code on Method
     *
     * @return response()
     */
    public function index()
    {
        $search = "Barack Ob";
        $users = User::select("id", "first_name", "last_name")
                       ->orWhere(DB::raw("concat(first_name, ' ', last_name)"), 'LIKE', "%".$search."%")
                       ->get()->toArray();
  
        dd($users);
    }
}

    Output:

array:1 [0 => array:3 ["id" => 1
    "first_name" => "Barack"
    "last_name" => "Obama"
  ]
]

    Ví dụ 2:

    app/Http/Controller/UserController

<?php

namespace App\Http\Controllers;

use Illuminate\Http\Request;
use App\Models\User;
use DB;

class UserController extends Controller
{
    /**
     * Write code on Method
     *
     * @return response()
     */
    public function index()
    {
        $search = "Barack Ob";
        $users = User::select("id", "first_name", "last_name")
                       ->whereRaw("concat(first_name, ' ', last_name) like '%" .$search. "%' ")
                       ->get()->toArray();
  
        dd($users);
    }
}

    Output:

array:1 [0 => array:3 ["id" => 1
    "first_name" => "Barack"
    "last_name" => "Obama"
  ]
]

    Ví dụ 3:

    app/Http/Controller/UserController

<?php

namespace App\Http\Controllers;

use Illuminate\Http\Request;
use App\Models\User;
use DB;

class UserController extends Controller
{
    /**
     * Write code on Method
     *
     * @return response()
     */
    public function index()
    {
        $search = "Ob";
        $users = User::select("id", "first_name", "last_name")
                       ->where(function ($q) use ($search) {
                            $q->orWhere('first_name', 'like', "%{$search}%")
                              ->orWhere('last_name', 'like', "%{$search}%");
                        })
                       ->get()->toArray();
  
        dd($users);
    }
}

    Output:

array:1 [0 => array:3 ["id" => 1
    "first_name" => "Barack"
    "last_name" => "Obama"
  ]
]

Nguồn: Viblo

Bình luận
Vui lòng đăng nhập để bình luận
Một số bài viết liên quan