code

라 라벨에서 Eloquent ORM을 사용하여 LIKE를 사용하여 데이터베이스 검색 수행

codestyles 2020. 9. 4. 07:28
반응형

라 라벨에서 Eloquent ORM을 사용하여 LIKE를 사용하여 데이터베이스 검색 수행


Eloquent의 활성 레코드 빌딩을 사용하여 검색 쿼리를 작성하고 싶지만 LIKE 검색이 될 것입니다. 나는를 발견 User::find($term)하거나 User::find(1), 그러나 이것은 같은 문을 생성하지 않습니다. 나는 직접적인 대답을 찾고 있지는 않지만 누군가가 적어도 나에게 방향을 알려줄 수 있다면 그것은 좋을 것입니다!


다음 구문으로 LIKE를 사용하여 데이터베이스 찾기를 수행 할 수 있습니다.

Model::where('column', 'LIKE', '%value%')->get();

LIKE를 자주 사용해야하는 경우 문제를 약간 단순화 할 수 있습니다. Eloquent ORM을 상속하는 모델에서 ()와 같은 사용자 지정 메서드를 만들 수 있습니다.

public  function scopeLike($query, $field, $value){
        return $query->where($field, 'LIKE', "%$value%");
}

따라서 다음과 같은 방식으로이 방법을 사용할 수 있습니다.

User::like('name', 'Tomas')->get();

참고로 연산자 목록 ( like 및 기타 모두 포함)은 코드에 있습니다.

/vendor/laravel/framework/src/Illuminate/Database/Query/Builder.php

protected $operators = array(
    '=', '<', '>', '<=', '>=', '<>', '!=',
    'like', 'not like', 'between', 'ilike',
    '&', '|', '^', '<<', '>>',
    'rlike', 'regexp', 'not regexp',
);

부인 성명:

Joel Larson의 대답이 맞습니다. 내 찬성 투표를 받았습니다.

나는이 대답은 설득력 ORM을 통해 (사용 가능한 무엇에 더 많은 빛을 비춰 바라고 있어요 권리 직접에서 포인트 명 ). 문서에 대한 링크가 훨씬 낫지 만 그 링크는 그 자체로 이해하기 어려운 것으로 입증되었습니다.


작은 따옴표 대신 큰 따옴표를 사용하십시오.

where('customer.name', 'LIKE', "%$findcustomer%")

아래는 내 코드입니다.

public function searchCustomer($findcustomer)
{
    $customer = DB::table('customer')
                  ->where('customer.name', 'LIKE', "%$findcustomer%")
                  ->orWhere('customer.phone', 'LIKE', "%$findcustomer%")
                  ->get();

    return View::make("your view here");
}

나처럼 큰 따옴표가 마음에 들지 않으면 작은 따옴표로 작동합니다.

$value = Input::get('q');
$books = Book::where('name', 'LIKE', '%' . $value . '%')->limit(25)->get();

return view('pages/search/index', compact('books'));

참고 URL : https://stackoverflow.com/questions/13386774/using-eloquent-orm-in-laravel-to-perform-search-of-database-using-like

반응형