Laravel : Eloquent 및 MySQL을 사용하여 쉼표로 구분된 열 쿼리 find_in_set

Laravel : Eloquent 및 MySQL을 사용하여 쉼표로 구분된 열 쿼리 find_in_set



소개



Laravel 프로젝트의 mysql 열에 쉼표로 구분된 값을 저장하는 것은 드문 일이 아닙니다.

colours : "red,blue,green,yellow,black,white"

users : "77,4,5,688,5454,342,32,332"

tags : "mysql,laravel,css,html"


열 쿼리



MySQL 함수FIND_IN_SET()를 사용하여 쿼리할 수 있습니다.

$search;
ModelName::whereRaw("FIND_IN_SET($search,colours)");

ModelName::whereRaw("FIND_IN_SET($search,users)");

ModelName::whereRaw("FIND_IN_SET($search,tags)");


컬럼 쿼리 - SQL 인젝션 방지




$search;
ModelName::whereRaw("FIND_IN_SET(?,colours)",[$search]);

ModelName::whereRaw("FIND_IN_SET(?,users)",[$search]);

ModelName::whereRaw("FIND_IN_SET(?,tags)",[$search]);


모델의 범위로




    class ModelName extends Model{


        public function scopeContainsTag($query,$tag){
            return $query->whereRaw("FIND_IN_SET(?,tags)",[$tag]);
        } 
    }


컨트롤러에서 모델을 쿼리하는 동안 범위를 호출할 수 있습니다.

    public function index(Request $request){
        ModelName::containsTag($request->tag_name)->get();
    }


메모



쉼표로 구분하여 열에 데이터를 저장하는 다른 방법이 있습니다.
Laravel 문서 읽기Array & JSON Casting

좋은 웹페이지 즐겨찾기