実現したいこと
fuelでJSON_CONTAINSを使いたいのですが、実行されるクエリの最後にnullがついてしまうので解消したいです。
該当のソースコード
PHP
1$query->where(DB::expr('JSON_CONTAINS(`company_ features`,' . "'[1,2]'" . ')'));
発生している問題・エラーメッセージ
クエリを実行すると以下のようなSQLになり、最後にnullがつくためクエリーエラーとなります。
JSON_CONTAINS(`company_ features`,'[1,2]') null"
nullが最後につくため、以下のようなエラーメッセージも表示されます。
Fuel\Core\Database_Exception [ 42000 ]: SQLSTATE[42000]: Syntax error or access violation: 1064 You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'null' at line 1 with query
ちなみに$queryをprint_rでみていると、以下のような感じでした。
[_where:protected] => Array ( [0] => Array ( [AND] => Array ( [0] => Fuel\Core\Database_Expression Object ( [_value:protected] => JSON_CONTAINS(`company_ features`,'[1,2]') ) [1] => [2] => ) ) )
以下、追記
ちなみにこのように書くと、nullにはならなりますが、思っていたSQLとは別のものになります。
$query->where(DB::expr('JSON_CONTAINS(`company_ features``,' . "'[1,2]'" . ')'), '');
この結果はこうなります。
JSON_CONTAINS(`company_ features`,'[1,2]') = ''
追記
以下のように書くと良さそうでした!
$cquery->where(DB::expr('JSON_CONTAINS(`company_ features`'), ',', '["1,2"]');
結果
JSON_CONTAINS(`company_ features` , '[\"1,2\"]'
バックスラッシュが入っているのと一番後ろに括弧をつければいけそうなのですが、ここからうまくいきません。。
記載方法が間違っているのかもしれません。
ご教示お願いいたします。
