* @license http://github.com/basdenooijer/solarium/raw/master/COPYING * @link http://www.solarium-project.org/ * * @package Solarium * @subpackage Query */ /** * Update query add command * * For details about the Solr options see: * @link http://wiki.apache.org/solr/UpdateXmlMessages#add.2BAC8-update * * @package Solarium * @subpackage Query */ class Solarium_Query_Update_Command_Add extends Solarium_Query_Update_Command { /** * Documents to add * * @var array */ protected $_documents = array(); /** * Get command type * * @return string */ public function getType() { return Solarium_Query_Update::COMMAND_ADD; } /** * Add a single document * * @param object $document * @return Solarium_Query_Update_Command_Add Provides fluent interface */ public function addDocument($document) { $this->_documents[] = $document; return $this; } /** * Add multiple documents * * @param array|Traversable $documents * @return Solarium_Query_Update_Command_Add Provides fluent interface */ public function addDocuments($documents) { //if we don't have documents so far, accept arrays or Traversable objects as-is if (empty($this->_documents)) { $this->_documents = $documents; return $this; } //if something Traversable is passed in, and there are existing documents, convert all to arrays before merging if ($documents instanceof Traversable) { $documents = iterator_to_array($documents); } if ($this->_documents instanceof Traversable) { $this->_documents = array_merge(iterator_to_array($this->_documents), $documents); } else { $this->_documents = array_merge($this->_documents, $documents); } return $this; } /** * Get all documents * * @return array */ public function getDocuments() { return $this->_documents; } /** * Set overwrite option * * @param boolean $overwrite * @return Solarium_Query_Update_Command_Add Provides fluent interface */ public function setOverwrite($overwrite) { return $this->_setOption('overwrite', $overwrite); } /** * Get overwrite option * * @return boolean */ public function getOverwrite() { return $this->getOption('overwrite'); } /** * Get commitWithin option * * @param boolean $commitWithin * @return Solarium_Query_Update_Command_Add Provides fluent interface */ public function setCommitWithin($commitWithin) { return $this->_setOption('commitwithin', $commitWithin); } /** * Set commitWithin option * * @return boolean */ public function getCommitWithin() { return $this->getOption('commitwithin'); } }