Allow Table name prefixed with underscore
Replace the original symfony/lib/plugins/sfPropelPlugin/lib/addon/sfPropelDatabaseSchema.class.php:
public function getChildren($hash)
{
foreach ($hash as $key => $value)
{
// ignore special children (starting with _)
if ($key[0] == '_')
{
unset($hash[$key]);
}
}
return $hash;
}
with:
public function getChildren($hash)
{
foreach ($hash as $key => $value)
{
// ignore special children (starting with _)
if (in_array($key, array('_attributes', '_behaviors', '_propel_behaviors', '_inheritance', '_nestedSet', '_foreignKeys', '_indexes', '_uniques')))
{
unset($hash[$key]);
}
}
return $hash;
}
Now you can define a table name which is prefixed by underscore in your config/schema.yml:
connection: propel
defaultIdMethod: native
package: lib.model
classes:
MyTable:
tableName: _my_table
columns:
id:
column1: { type: varchar, size: 30 }
column2: { type: varchar, size: 255 }
Match the Propel Generated Model Files with Symfony Coding Standard
Propel 1.4 introduce behaviors named alternative_coding_standarts which can be used to alter Propel generated model files according to symfony. But, this behavior known not working and need to be pacthed. Locate symfony/lib/plugins/sfPropelPlugin/lib/vendor/propel-generator/classes/propel/engine/behavior/AlternativeCodingStandardsBehavior.php, and change:
if($this->getParameter('brackets_newline') == 'true') {
$filter['#^(/t*)/}/h(else|elseif|catch)(.*)/h/{$#m'] = "$1}
$1$2$3
$1{";
$filter['#^(/t*)(/w.*)/h/{$#m'] = "$1$2
$1{";
}
to:
if($this->getParameter('brackets_newline') == 'true') {
// class
$filter['#^(\w.*)\h\{#m'] = "$1\n{";
// line ending with {
$filter['#^(\t+)(\w.*)\h\{#m'] = "$1$2\n$1{";
// } something {
$filter['#^(\t+)\}\h(else|elseif|catch)(.*)\h\{#m'] = "$1}\n$1$2$3\n$1{";
}
Change the config/propel.ini to include alternative_coding_standarts behavior as default:
propel.behavior.default = symfony,symfony_i18n
to:
propel.behavior.default = symfony,symfony_i18n,alternative_coding_standards
And then rebuild your model files.
Adding Behavior to Add __toString() Method for Model Files
To be able to automatically generate __toString() method, symfony_tostring behavior need to be added as default behavior or registered as symfony behaviors in config/schema.yml.
propel.behavior.default = symfony,symfony_i18n,symfony_tostring,alternative_coding_standards propel.behavior.symfony_tostring.class = plugins.sfPropelPlugin.lib.behavior.SfPropelBehaviorToString
To include a column in __toString() method, define an attribute toString: true to column definition, as in:
classes:
MyTable:
tableName: _my_table
columns:
id:
column1: { type: varchar, size: 30, toString: true }
column2: { type: varchar, size: 255 }
This behavior accept an argument named separator which will be used to concatenate the column if there are many columns defined with toString attribute.
classes:
MyTable:
tableName: _my_table
columns:
id:
column1: { type: varchar, size: 30, toString: true }
column2: { type: varchar, size: 255, toString: true }
behaviors:
symfony_tostring:
separator: ' - '
Dont forget to rebuild your models.
Download: http://numpang.bkdjombang.com/files/symfony/1.4/extending-propel-in-symfony-1.4.zip