SELECT
"검색"방법을 만들기 위해 몇 가지 쿼리를 수행하는 동안 문제가 있습니다 . 다음은 내 테이블 구조입니다.table 'users': name | varchar, username | varchar, role | enum[Admin, Owner, Cashier], address | text
나는라는 매개 변수 전송 아약스 스크립트를 만든 query
나의로를 Laravel Controller
. 이 query
매개 변수에는 사용자 테이블에서 역할을 admin.blade.php
가진 사용자 만 표시하는 내 페이지 에서 일부 데이터를 검색하는 사용자의 입력 이 포함 됩니다 Admin
. 내 질문은 다음과 같습니다.
$data = DB::table('users')
->join('outlets','users.outlet_id','outlets.outlet_id')
->where('users.role','Admin')
->where('users.nama','like','%'.$query.'%')
->where('users.username','like','%'.$query.'%')
->orWhere('outlets.nama_outlet','like','%'.$query.'%')
->orWhere('users.address','like','%'.$query.'%')
->orderBy('users.user_id')
->get();
에주의를 기울일 필요가 없습니다 join
. 내 문제의 포인트는이 사용자도 반환 위의 쿼리입니다 Owner
및 Cashier
역할. 예를 들어, Admin
이름 John
과 Owner
이름 Jane
이이고 둘 다 같은 주소를 가지고 있습니다 New York
. 사용자 New York
가 검색 창에 입력했을 때 위의 검색어는 John
. 그러나 제 경우에는 Jane
.
쿼리는 어떻게해야합니까?
제 질문을 이해하시기 바랍니다. 감사합니다.
다음과 같이 함수에서 where 쿼리를 사용할 수 있습니다.
$data = DB::table('users')
->join('outlets','users.outlet_id','outlets.outlet_id')
->where('users.role','Admin')
->where(function($q) use ($query) {
$q->where('users.nama','like','%'.$query.'%');
$q->orWhere('users.username','like','%'.$query.'%');
$q->orWhere('outlets.nama_outlet','like','%'.$query.'%');
$q->orWhere('users.address','like','%'.$query.'%');
})->orderBy('users.user_id')
->get();
이 기사는 인터넷에서 수집됩니다. 재 인쇄 할 때 출처를 알려주십시오.
침해가 발생한 경우 연락 주시기 바랍니다[email protected] 삭제
몇 마디 만하겠습니다