0
my_table
とjsonbの列sentiments
があります。この列からすべてのキー '10216'と '10191'を削除する必要があります。"?|"でクエリを実行する演算子
私はLaravelで次に何をしよう:
DB::table('my_table')
->whereRaw("sentiments ?| ARRAY['10216', '10191']")
->update([
'sentiments' => DB::raw("sentiments - '10216' - '10191'")
]);
しかし、私は次のエラーを持っている: "?"
[Illuminate\Database\QueryException]
SQLSTATE[42601]: Syntax error: 7 ОШИБКА: ошибка синтаксиса (примерное положение: "$1")
LINE 1: ...= sentiments - '10216' - '10191' where sentiments $1| ARRAY[...
^(SQL: update "my_table"
set "sentiments" = sentiments - '10216' - '10191'
where sentiments ?| ARRAY['10216', '10191'])
私が見るので、通りパラメータのように見えます。このシンボルをエスケープするには?
UPDATE
また、私は二つの質問書き込もうとしました:sentiments ??| ARRAY
:@degrする
[Illuminate\Database\QueryException]
SQLSTATE[42883]: Undefined function: 7 ОШИБКА: оператор не существует: jsonb ??| text[]
LINE 1: ...= sentiments - '10216' - '10191' where sentiments ??| ARRAY[...
^
HINT: Оператор с данными именем и типами аргументов не найден. Возможно, вам следует добавить явные приведения тип
ов. (SQL: update "my_table" set "sentiments" = sentiments - '10216' - '10191' where sentiments ??|
ARRAY['10216', '10191'])
あなたは試しましたか? (2つの疑問符) – degr
@degr:アイデアありがとうございますが、それは役に立ちません。私は答えを更新しました。 – mnv
これをチェック - http://stackoverflow.com/questions/16311939/how-to-prevent-pdo-from-interpreting-a-question-mark-as-a-placeholder – degr