params); } /** * Clone an existing query for a subsequent modifying and building. */ public function clone(Update $query): self { $this->cloneInternal($query); return $this; } /** * For what entity type to build a query. */ public function in(string $entityType): self { if (isset($this->params['from'])) { throw new RuntimeException("Method 'in' can be called only once."); } $this->params['from'] = $entityType; return $this; } /** * Values to set. Column => Value map. * * @param array $set */ public function set(array $set): self { $modified = []; foreach ($set as $key => $value) { if (!$value instanceof Expression) { $modified[$key] = $value; continue; } $newKey = rtrim($key, ':') . ':'; $modified[$newKey] = $value->getValue(); } $this->params['set'] = $modified; return $this; } /** * Apply LIMIT. */ public function limit(?int $limit = null): self { $this->params['limit'] = $limit; return $this; } }