I remember that I had the same problem and thought I solved it by writing something like this:
$ repository-> findBy (array ('is_enabled' => true));
Take a look at the code:
<?php /** * Adds support for magic finders. * * @return array|object The found entity/entities. * @throws BadMethodCallException If the method called is an invalid find* method * or no find* method at all and therefore an invalid * method call. */ public function __call($method, $arguments) { if (substr($method, 0, 6) == 'findBy') { $by = substr($method, 6, strlen($method)); $method = 'findBy'; } else if (substr($method, 0, 9) == 'findOneBy') { $by = substr($method, 9, strlen($method)); $method = 'findOneBy'; } else { throw new \BadMethodCallException( "Undefined method '$method'. The method name must start with ". "either findBy or findOneBy!" ); } if ( !isset($arguments[0])) { // we dont even want to allow null at this point, because we cannot (yet) transform it into IS NULL. throw ORMException::findByRequiresParameter($method.$by); } $fieldName = lcfirst(\Doctrine\Common\Util\Inflector::classify($by)); if ($this->_class->hasField($fieldName) || $this->_class->hasAssociation($fieldName)) { return $this->$method(array($fieldName => $arguments[0])); } else { throw ORMException::invalidFindByCall($this->_entityName, $fieldName, $method.$by); } }
The key line is here:
$fieldName = lcfirst(\Doctrine\Common\Util\Inflector::classify($by));
Now let's see how to classify:
<?php public static function classify($word) { return str_replace(" ", "", ucwords(strtr($word, "_-", " "))); }
It looks like you should write your "likeThis" fields if you want this to work.
source share