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
[email protected]
http://lists.ez.no/mailman/listinfo/components