Php 使用CodeIgniter和ORM为每个记录创建一个令牌
我有一个使用条令的模型设置。我想为每条记录生成一个标记,因此我想我需要使用我在Symfony中找到的类似内容重载Doctrine的save()函数:Php 使用CodeIgniter和ORM为每个记录创建一个令牌,php,codeigniter,doctrine,Php,Codeigniter,Doctrine,我有一个使用条令的模型设置。我想为每条记录生成一个标记,因此我想我需要使用我在Symfony中找到的类似内容重载Doctrine的save()函数: class JobeetAffiliate extends BaseJobeetAffiliate { public function save(Doctrine_Connection $conn = null) { if (!$this->getToken()) { $this->setToken(
class JobeetAffiliate extends BaseJobeetAffiliate
{
public function save(Doctrine_Connection $conn = null)
{
if (!$this->getToken())
{
$this->setToken(sha1($this->getEmail().rand(11111, 99999)));
}
return parent::save($conn);
}
// ...
}
我当前的模型如下所示:
<?php
class Photo extends Doctrine_Record {
public function setTableDefinition() {
$this->hasColumn('photo_path', 'string', 255, array('unique' => 'true'));
$this->hasColumn('count', 'integer', 4, array('unsigned' => 'true'));
$this->hasColumn('is_count', 'integer', 4, array('unsigned' => 'true'));
$this->hasColumn('region_id', 'integer', 4);
$this->hasColumn('region_id', 'integer', 4);
$this->hasColumn('token', 'string', 255);
}
public function setUp() {
$this->actAs('Timestampable');
$this->hasOne('Region', array(
'local' => 'region_id',
'foreign' => 'id'
));
}
}
您应该查看条令及其preSave()函数。因此,您只需在模型内部工作:
难道不能在Photo类中添加save()方法吗?太棒了,这正是我需要的。非常感谢你。我真希望我不是刚刚加入,能投票支持你的职位!最后我只使用了preInsert($event),这样就可以省去if语句。
public function setTableDefinition() {
$this->hasColumn('photo_path', 'string', 255, array('unique' => 'true'));
$this->hasColumn('count', 'integer', 4, array('unsigned' => 'true'));
$this->hasColumn('is_count', 'integer', 4, array('unsigned' => 'true'));
$this->hasColumn('region_id', 'integer', 4);
$this->hasColumn('region_id', 'integer', 4);
$this->hasColumn('token', 'string', 255);
}
public function setUp() {
$this->actAs('Timestampable');
$this->hasOne('Region', array(
'local' => 'region_id',
'foreign' => 'id'
));
}
public funcion preSave($event) {
if( ! $this->token) {
$this->setToken(sha1($this->getEmail().rand(11111, 99999)));
}
}