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'));