###前提・実現したいこと
複数キーワード、複数除外キーワード
での検索を実装しています。
###発生している問題・エラーメッセージ
NOT LIKE
が動いていません。
サブクエリでNOT LIKE
を生成する方法がよいかと思っています。
しかし、サブクエリの書き方がわかりません、、、
###該当のソースコード
PHP
1//複数キーワード 2//$freeword_str = 東京 大阪 3if(isset($freeword_str) && $freeword_str !== FALSE){ 4 $arr = []; 5 $freeword_str = mb_convert_kana($freeword_str, 's'); 6 $keywords = preg_split('/[\s]+/', $freeword_str, -1, PREG_SPLIT_NO_EMPTY); 7 8 $fileds = ['hoge01', 'hoge02', 'hoge03']; 9 10 foreach ($fileds as $filed) { 11 $clumn = sprintf('%s LIKE', $filed); 12 foreach ($keywords as $key => $value) { 13 $value = "%{$value}%"; 14 $arr[][$clumn] = $value; 15 } 16 } 17 18 $query->where(['OR' => $arr]); 19 } 20//複数除外キーワード 21//$exword_str = 渋谷区 目黒区 22 if(isset($exword_str) && $exword_str !== FALSE){ 23 $arr = []; 24 $freeword_str = mb_convert_kana($exword_str, 's'); 25 $keywords = preg_split('/[\s]+/', $exword_str, -1, PREG_SPLIT_NO_EMPTY); 26 27 $fileds = ['hoge01', 'hoge02', 'hoge03']; 28 29 foreach ($fileds as $filed) { 30 $clumn = sprintf('%s NOT LIKE', $filed); 31 foreach ($keywords as $key => $value) { 32 $value = "{$value}"; 33 $arr[][$clumn] = $value; 34 } 35 } 36 37 $query->where(['OR' => $arr]); 38 }
###追記
テーブル構成は以下の通りです。
masterテーブル
id | name | form_id | pre_id | em_id |
---|---|---|---|---|
1 | 会社名1 | 1 | 1 | 1 |
2 | 会社名2 | 3 | 1 | 3 |
3 | 会社名3 | 3 | 2 | 1 |
master_formテーブル
id | form_id |
---|---|
1 | 2 |
2 | 1 |
2 | 2 |
3 | 1 |
3 | 3 |
formテーブル
form_id | name |
---|---|
1 | 正社員 |
2 | 派遣 |
3 | アルバイト |
emテーブル
id | name |
---|---|
1 | 固定給 |
2 | 時給 |
3 | 歩合 |
preテーブル
id | name |
---|---|
1 | 東京 |
2 | 大阪 |
3 | 名古屋 |
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2017/08/22 03:36
2017/08/22 04:06 編集
2017/08/22 04:15
2017/08/22 04:18
2017/08/22 06:30
2017/08/22 06:34