/** * Adds the singular filterByCol method for an Array column. * @param string &$script The script will be modified in this method. * @param Column $col */ protected function addFilterByArrayCol(&$script, Column $col) { $colPhpName = $col->getPhpName(); $singularPhpName = $col->getPhpSingularName(); $colName = $col->getName(); $variableName = $col->getCamelCaseName(); $qualifiedName = $this->getColumnConstant($col); $script .= "\n /**\n * Filter the query on the {$colName} column\n * @param mixed \${$variableName} The value to use as filter\n * @param string \$comparison Operator to use for the column comparison, defaults to Criteria::CONTAINS_ALL\n *\n * @return \$this|" . $this->getQueryClassName() . " The current query, for fluid interface\n */\n public function filterBy{$singularPhpName}(\${$variableName} = null, \$comparison = null)\n {\n if (null === \$comparison || \$comparison == Criteria::CONTAINS_ALL) {\n if (is_scalar(\${$variableName})) {\n \${$variableName} = '%| ' . \${$variableName} . ' |%';\n \$comparison = Criteria::LIKE;\n }\n } elseif (\$comparison == Criteria::CONTAINS_NONE) {\n \${$variableName} = '%| ' . \${$variableName} . ' |%';\n \$comparison = Criteria::NOT_LIKE;\n \$key = \$this->getAliasedColName({$qualifiedName});\n if (\$this->containsKey(\$key)) {\n \$this->addAnd(\$key, \${$variableName}, \$comparison);\n } else {\n \$this->addAnd(\$key, \${$variableName}, \$comparison);\n }\n \$this->addOr(\$key, null, Criteria::ISNULL);\n\n return \$this;\n }\n\n return \$this->addUsingAlias({$qualifiedName}, \${$variableName}, \$comparison);\n }\n"; }
/** * Adds the singular filterByCol method for an Array column. * * @param string &$script The script will be modified in this method. * @param Column $col */ protected function addFilterBySetCol(&$script, Column $col) { $colPhpName = $col->getPhpName(); $singularPhpName = $col->getPhpSingularName(); $colName = $col->getName(); $variableName = $col->getCamelCaseName(); $script .= "\n /**\n * Filter the query on the {$colName} column\n * @param mixed \${$variableName} The value to use as filter\n * @param string \$comparison Operator to use for the column comparison, defaults to Criteria::CONTAINS_ALL\n *\n * @return \$this|" . $this->getQueryClassName() . " The current query, for fluid interface\n */\n public function filterBy{$singularPhpName}(\${$variableName} = null, \$comparison = null)\n {\n return \$this->filterBy{$colPhpName}(\${$variableName}, \$comparison);\n }\n"; }
/** * Adds a remove method for an array column. * @param string &$script The script will be modified in this method. * @param Column $col The current column. */ protected function addRemoveArrayElement(&$script, Column $col) { $clo = $col->getLowercasedName(); $cfc = $col->getPhpName(); $visibility = $col->getAccessorVisibility(); $singularPhpName = $col->getPhpSingularName(); $columnType = $col->getType() === PropelTypes::PHP_ARRAY ? 'array' : 'set'; $script .= "\n /**\n * Removes a value from the [{$clo}] {$columnType} column value.\n * @param mixed \$value\n * " . $col->getDescription(); if ($col->isLazyLoad()) { $script .= "\n * @param ConnectionInterface \$con An optional ConnectionInterface connection to use for fetching this lazy-loaded column."; } $script .= "\n * @return \$this|" . $this->getObjectClassName(true) . " The current object (for fluent API support)\n */\n {$visibility} function remove{$singularPhpName}(\$value"; if ($col->isLazyLoad()) { $script .= ", ConnectionInterface \$con = null"; } // we want to reindex the array, so array_ functions are not the best choice $script .= ")\n {\n \$targetArray = array();\n foreach (\$this->get{$cfc}("; if ($col->isLazyLoad()) { $script .= "\$con"; } $script .= ") as \$element) {\n if (\$element != \$value) {\n \$targetArray []= \$element;\n }\n }\n \$this->set{$cfc}(\$targetArray);\n\n return \$this;\n } // remove{$singularPhpName}()\n"; }
public function testPhpSingularName() { $column = new Column(); $column->setPhpName('Aliases'); $this->assertEquals($column->getPhpName(), 'Aliases'); $this->assertEquals($column->getPhpSingularName(), 'Aliase'); $column = new Column(); $column->setPhpName('Aliases'); $column->setPhpSingularName('Alias'); $this->assertEquals($column->getPhpName(), 'Aliases'); $this->assertEquals($column->getPhpSingularName(), 'Alias'); }