为什么laravel Query构建器不支持与IN条件运算符的连接?

时间:2017-08-19 22:53:00

标签: php laravel laravel-5

我试图在Laravel中做这样的事情:

function Extract(){ 
  var ss = SpreadsheetApp.getActive();
  var sheet = ss.getSheetByName('Test');
  var rows = sheet.getDataRange();
  var numRows = rows.getNumRows();
  var values = rows.getBackgrounds();
  var yellowColour = '#ffff00';
  var whiteColour = '#ffffff';


  var newSheet = ss.getSheetByName('New Sheet');

 for (var i = 0; i <= numRows - 1; i++) {

 var row = values[i];

   if (row[6] === whiteColour ) {  

   } 
     else {

       newSheet.appendRow(row);

     }

 } // End of For Loop
};

但是当我查看Builder.php文件时,这些是 ON 子句支持的唯一运算符:

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

是否有任何理由 IN 未在 $运算符中列出?

1 个答案:

答案 0 :(得分:1)

您应该在加入条款中使用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->on('foo', 'in', DB::raw('("bar")')))你应该重写   条件使用适当的where子句:

 $join->whereIn('foo', ['bar']);