/** * @param string|array|callable $name * @param string $operator * @param string $value * @return static */ public function orWhere($name, $operator = null, $value = null) { if (!isset($this->where)) { $this->where = new WhereExpression(); } $this->where->orWhere($name, $operator, $value); return $this; }
public function testClosure() { $query = new WhereExpression(); $query->where(function (LogicalExpression $query) { $query->where('foo', 'inner foo string'); $query->orWhere('bar', 'inner bar string'); return $query; })->where('other', '<', 30); static::assertEquals('WHERE (`foo` = ? OR `bar` = ?) AND `other` < ?', $query->toSql()); static::assertEquals(['inner foo string', 'inner bar string', 30], $query->getBindings()); $query = new WhereExpression(); $query->where(function (LogicalExpression $query) { $query->where('foo', 'inner foo string'); $query->orWhere(function (LogicalExpression $query) { $query->orWhere('bar1', 'inner bar1 string'); $query->orWhere('bar2', 'inner bar2 string'); }); return $query; })->where('other', '<', 30); static::assertEquals('WHERE (`foo` = ? OR (`bar1` = ? OR `bar2` = ?)) AND `other` < ?', $query->toSql()); static::assertEquals(['inner foo string', 'inner bar1 string', 'inner bar2 string', 30], $query->getBindings()); }