Hi lists reader :)

i've a problem with creating sql statements with persistent objects of ezc.

The following Code:
$ezcSession = ezcPersistentSessionInstance::get();
$query = $ezcSession->createFindQuery('Yela_Persistence_Core_Acl_Rules');
                var_dump($query->getQuery());die();

results in this statement:
string(133) "SELECT `yela_core_acl_rules`.`assert_id`,
`yela_core_acl_rules`.`privileges`, `yela_core_acl_rules`.`type` FROM
`yela_core_acl_rules`"

But my table looks like this:
CREATE TABLE  `YelaCMS`.`yela_core_acl_rules` (
  `rule_id` int(10) unsigned NOT NULL AUTO_INCREMENT,
  `group_id` int(10) unsigned NOT NULL,
  `resource_id` varchar(200) NOT NULL,
  `privileges` text NOT NULL,
  `assert_id` int(10) unsigned NOT NULL DEFAULT '0',
  `type` varchar(10) NOT NULL DEFAULT 'deny',
  PRIMARY KEY (`rule_id`) USING BTREE,
  KEY `fk1` (`resource_id`),
  KEY `fk2` (`group_id`),
  KEY `fk3` (`assert_id`),
  KEY `misc` (`type`)
) ENGINE=InnoDB AUTO_INCREMENT=3 DEFAULT CHARSET=utf8

There are some attributes missing in my statement.
The definition file looks like this:

$def = new ezcPersistentObjectDefinition();
$def->table = 'yela_core_acl_rules';
$def->class = 'Yela_Persistence_Core_Acl_Rules';

$def->idProperty               = new ezcPersistentObjectIdProperty();
$def->idProperty->columnName   = 'rule_id';
$def->idProperty->propertyName = 'rule_id';
$def->idProperty->generator    = new ezcPersistentGeneratorDefinition(
'ezcPersistentSequenceGenerator' );
$def->idProperty->propertyType = ezcPersistentObjectProperty::PHP_TYPE_INT;

$def->idProperty               = new ezcPersistentObjectIdProperty();
$def->idProperty->columnName   = 'group_id';
$def->idProperty->propertyName = 'group_id';
$def->idProperty->generator    = new ezcPersistentGeneratorDefinition(
'ezcPersistentManualGenerator' );
$def->idProperty->propertyType = ezcPersistentObjectProperty::PHP_TYPE_INT;

$def->idProperty               = new ezcPersistentObjectIdProperty();
$def->idProperty->columnName   = 'resource_id';
$def->idProperty->propertyName = 'resource_id';
$def->idProperty->generator    = new ezcPersistentGeneratorDefinition(
'ezcPersistentManualGenerator' );
$def->idProperty->propertyType = ezcPersistentObjectProperty::PHP_TYPE_INT;

$def->properties['privileges']               = new
ezcPersistentObjectProperty();
$def->properties['privileges']->columnName   = 'privileges';
$def->properties['privileges']->propertyName = 'privileges';
$def->properties['privileges']->propertyType =
ezcPersistentObjectProperty::PHP_TYPE_STRING;

$def->idProperty               = new ezcPersistentObjectIdProperty();
$def->idProperty->columnName   = 'assert_id';
$def->idProperty->propertyName = 'assert_id';
$def->idProperty->generator    = new ezcPersistentGeneratorDefinition(
'ezcPersistentManualGenerator' );
$def->idProperty->propertyType = ezcPersistentObjectProperty::PHP_TYPE_INT;

$def->properties['type']               = new ezcPersistentObjectProperty();
$def->properties['type']->columnName   = 'type';
$def->properties['type']->propertyName = 'type';
$def->properties['type']->propertyType =
ezcPersistentObjectProperty::PHP_TYPE_STRING;

$def->relations['Yela_Persistence_Core_Resources'] = new
ezcPersistentOneToManyRelation('yela_core_resources',
'yela_core_acl_rules');
$def->relations['Yela_Persistence_Core_Resources']
    ->columnMap = array(new ezcPersistentSingleTableMap('resources_id',
'resource_id'));

$def->relations['Yela_Persistence_Core_Acl_Groups'] = new
ezcPersistentOneToManyRelation('yela_core_acl_groups',
'yela_core_acl_rules');
$def->relations['Yela_Persistence_Core_Acl_Groups']
    ->columnMap = array(new ezcPersistentSingleTableMap('id', 'group_id'));

$def->relations['Yela_Persistence_Core_Acl_Assertions'] = new
ezcPersistentOneToManyRelation('yela_core_acl_assertions',
'yela_core_acl_rules');
$def->relations['Yela_Persistence_Core_Acl_Assertions']
    ->columnMap = array(new ezcPersistentSingleTableMap('id', 'assert_id'));

return $def;


The following class represents the previous defined table:
class Yela_Persistence_Core_Acl_Rules extends Yela_Db_Table {
    protected $_name = 'yela_core_acl_rules';
    protected $_primary = 'rule_id';
    public $rule_id = null;
    public $assert_id = null;
    public $group_id = null;
    public $privileges = '*';
    public $resource_id = null;
    public $type = 'deny';
    public function getState() {
        $result = array();
        $result['rule_id']     = $this->rule_id;
        $result['group_id']    = $this->group_id;
        $result['resource_id'] = $this->resource_id;
        $result['privileges']  = $this->privileges;
        $result['assert_id']   = $this->assert_id;
        $result['type']        = $this->type;

        return $result;
    }
}


This may be a pebkac error but help will be useful :)
Thank you.
René
-- 
Components mailing list
Components@lists.ez.no
http://lists.ez.no/mailman/listinfo/components

Reply via email to