[Laravel] 배열 문자열을 재정렬하고 읽어들이는 역할 영역 기능
개시하다
VARCHAR
다음 형식으로 등록된 시스템에 검색 기능을 추가할 때의 대응 방법["40","41","42","43","44","45","46","47"]
방법
모델 내에서 공통화하고 싶으므로 Scope화
FIND_IN_SET
: 첫 번째 매개 변수의 값이 두 번째 매개 변수에 포함될 때 범위를 되돌려줍니다?
: 사용자의 입력 값을 사용하기 때문에 プリペアドステートメント
로 귀속합니다replace
: 지정カラム名,置換元文字列
,置換先文字列
"FIND_IN_SET(?,replace(replace(replace({$target_column},'[',''),']',''),'\"',''))", $item);
User.phppublic function scopeWhereInByArray($query, $target_column, $ids)
{
$query->where(function ($subQuery) use ($ids, $target_column) {
foreach ($ids as $item) {
$subQuery->orWhereRaw("FIND_IN_SET(?,replace(replace(replace({$target_column},'[',''),']',''),'\"',''))", $item);
}
});
}
Scope 로직 활용
UserController.php
// クエリを生成
$query = User::query();
// 都道府県検索
if ($param->getPrefIds()) {
$query->whereInByArray('pref', $param->getPrefIds());
}
최후
읽어주셔서 감사합니다.
가능하면 기사를 쓰는 격려가 될 테니 참고 가치가 있는 분들도 잘 부탁드립니다!
Reference
이 문제에 관하여([Laravel] 배열 문자열을 재정렬하고 읽어들이는 역할 영역 기능), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://zenn.dev/naonao70/articles/74f6d5d8791629텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)