2017-08-19 2 views
0

私はLaravelにこのような何かをしようとしていた:私はBuilder.phpファイルに見たとき、これらは ON句のためにサポートされている唯一の演算子である、なぜlaravelクエリビルダはIN条件演算子との結合をサポートしていませんか?

DB::table('TABLE1')->join('TABLE2', 'COLUMN1', 'IN', '(1,2,3)') 

しかし:

public $operators = [ 
    '=', '<', '>', '<=', '>=', '<>', '!=', 
    'like', 'like binary', 'not like', 'between', 'ilike', 
    '&', '|', '^', '<<', '>>', 
    'rlike', 'regexp', 'not regexp', 
    '~', '~*', '!~', '!~*', 'similar to', 
    'not similar to', 'not ilike', '~~*', '!~~*', 
]; 

に記載されている理由がありますか?$ operators

答えて

1

あなたのJOIN句にwhereInを使用する必要があります。

DB::table('table_name')->join('table_name', function($join) { 
    $join->whereIn('table_name.column', ['valueA', 'valueB', 'valueC']); 
} 

クイックヒント:すでにLaravelのGitHubのリポジトリに答えているいくつかの質問:https://github.com/laravel/framework/issues/15366

Laravel 5.3アップグレードノートには、以下の情報が含まれています。

on句の演算子は、現在もチェックされており、無効な値が含まれている可能性があります。

$join->whereIn('foo', ['bar']); 
:あなたは、その機能 に頼っていた場合(例えば $join->on('foo', 'in', DB::raw('("bar")')))あなたは句を使用して、適切な 条件を書き換える必要があります
関連する問題