/** * Constructor * * @param \ModelCriteria|string $modelOrQuery A query object, or model class as string. * @param array $options */ public function __construct($modelOrQuery, array $options = array()) { if (is_string($modelOrQuery)) { $this->model = $modelOrQuery; $this->query = \PropelQuery::from($this->model); } else { if ($modelOrQuery instanceof \ModelCriteria) { $this->query = $modelOrQuery; $this->model = $this->query->getModelName(); } else { throw new \Exception('Invalid argument'); } } parent::__construct($options); }
/** * Define the hydration schema based on a query object. * Fills the Formatter's properties using a Criteria as source * * @param ModelCriteria $criteria * * @return PropelFormatter The current formatter object */ public function init(ModelCriteria $criteria) { $this->dbName = $criteria->getDbName(); $this->setClass($criteria->getModelName()); $this->setWith($criteria->getWith()); $this->asColumns = $criteria->getAsColumns(); $this->hasLimit = $criteria->getLimit() != 0; return $this; }
protected function filterByKeyword(\ModelCriteria $query, $params) { if (!empty($params['q'])) { $columns = array(); $peerClass = constant($this->query->getModelName() . '::PEER'); $phpNames = call_user_func(array($peerClass, 'getFieldNames')); foreach ($this->columns as $name => $column) { if (!empty($column['phpName'])) { if (in_array($column['phpName'], $phpNames)) { $columns[] = $this->query->getModelName() . '.' . $column['phpName']; } } } array_unshift($columns, '"|"'); $query->where('CONCAT_WS(' . join(',', $columns) . ') LIKE ?', '%' . $params['q'] . '%'); } }
public function testGetModelName() { $c = new ModelCriteria('bookstore', 'Book'); $this->assertEquals('Book', $c->getModelName(), 'getModelName() returns the name of the class associated to the model class'); }