前提・実現したいこと
初めての投稿なので足りないことだらけになってしまうと思いますが...。
現在検索機能を作っていて、配列のリクエストが来た場合、
code1,code2,code3の3つのフィールドにAND検索を行いたい。
Sample Table
sample_id | code1 | code2 | code3 | is_deleted |
---|---|---|---|---|
1 | 700 | 500 | 600 | false |
2 | 600 | 100 | null | false |
3 | 200 | 500 | null | false |
4 | 800 | 500 | 600 | false |
上記のテーブルがあった場合、
リクエストが$codes = [100,200,300]としたら
検索結果として"sample_id = 2,3"のレコードを取得したい。
発生している問題
code1,code2,code3というフィールドにwhereInをかけているのですが、
条件に引っかからない場合スルーしてほしいのにひっかかり、
全件で返ってきてしまう(is_deletedのfalseが原因?)
該当のソースコード
php
1 $sample_query = Sample::query(); 2 $display = self::displayResultData(); 3 $mansion_query->where(self::SAMPLE_TABLE . '.is_deleted', false) 4 ->whereIn(self::SAMPLE_TABLE . '.code1', $codes) 5 ->whereIn(self::SAMPLE_TABLE . '.code2', $codes) 6 ->whereIn(self::SAMPLE_TABLE . '.code3', $codes) 7 ->select($display); 8 9 $result = $sample_query->get(); 10
※$displayはselectで出したいフィールド名が書いてあります。
試したこと
whereの文をコメントアウトし、WhereIn(self::SAMPLE_TABLE . '.code1', $codes, 'OR')
にするとほしい結果が取れるが、deleteしたレコード取得はしたくないため、
whereの文を消せない。
補足情報(FW/ツールのバージョンなど)
Laravel / Mysql
回答3件
あなたの回答
tips
プレビュー