问题描述
我正在尝试php活动记录,这是一个很棒的ORM,但是我处于停滞状态.
I am trying out php active record, it's a great ORM, however I am at a standstill.
几天来,我一直在四处浏览Google,博客,phpactiverecord文档以及statckoverflow,但未能找到解决此问题的合适方法.
I have looked around google, blogs, phpactiverecord documentation as well as statckoverflow for days but have not been able to come across a suitable solution to this problem.
我能够执行基本的CRUD(插入,获取,修改和删除)操作,但是一旦我使用静态的$ validates_uniqueness_of过滤器验证了对象属性,我就会得到
I am able to carry out the basic CRUD (insert,fetch, modify and delete) operations however as soon as i validate an object property using a static $validates_uniqueness_of filter, i get
有消息
这是我完整使用的代码.
Here is the code i used in full.
<?php
$path_to_AR = "AR/";
include $path_to_AR . "activerecord.php";
ActiveRecord\Config::initialize(function($cfg) {
$cfg->set_model_directory('model');
$cfg->set_connections(
array(
'development' => 'mysql://root:asdf@localhost/test_ar',
'test' => 'mysql://username:password@localhost/test_database_name',
'production' => 'mysql://username:password@localhost/production_database_name'
)
);
});
/*
class user extends ActiveRecord\Model
{
static $validates_presence_of = array(array('username', 'message' => 'Please supply a username')); //this works just fine
static $validates_uniqueness_of = array(array('username'));//this line causes the PDO exception
}
*/
$user = new user();
user::create((array('username'=>'mike','password'=>'test','created'=>time())));
$user::create(array('username'=>'mike')); //cannot even reach this line because of the exeption
我尝试过/看过的参考书
https://github.com/kla/php-activerecord/issues/274 (尽管我不太了解那里发生的事情)
https://github.com/kla/php-activerecord/issues/274 (though i don't really understand what's going on there)
http://www.phpactiverecord.org/projects/main/wiki/验证次数#validates_uniqueness_of
http://blog.felho.hu/what-is-new-in-php-53-part-2-late-static-binding.html
http:// blog.felho.hu/what-is-new-in-php-53-part-2-late-static-binding.html
以及许多其他.
平台和php版本
我正在使用php 5.3.4并使用每夜构建(2013年5月8日),我几乎没办法解决这个问题.请提供有关纠正方法的建议.
I am using php 5.3.4 and using nightly build (May 8 2013) I have almost failed to get my head around this. Please advise on how to correct this.
推荐答案
问题作者已解决了这个问题:
This has been solved by the question author:
解决方法是在模型中创建自定义验证器
The work around was to create a custom validator in the model
public function validate() {
if ($this->is_new_record() && static::exists(array('conditions' => array('username' => $this->username)))) {
$this->errors->add('username', 'This username is already taken');
}
}
这篇关于PHP ActiveRecord异常:找不到基表或视图的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持!