简要说明:我试图在FUEL论坛上提出这个问题,但每次我尝试注册时,他们的论坛都说“发送激活邮件失败”,我无法登录或重置我的帐户。所以希望这里的人们会检查出来。我之前在这个网站上看到了一些FUEL的开发人员。
这是一个示例mysql表:
CREATE TABLE `test` (
`user_id` INT UNSIGNED NOT NULL AUTO_INCREMENT PRIMARY KEY ,
`username` VARCHAR( 128 ) NULL ,
`last_login` DATETIME NULL
) ENGINE = InnoDB
显然,与很多人不同,我个人喜欢利用数据库的NULL值。用外行人的话来说,NULL意味着它从未用值初始化。在这种情况下,如果我们的用户从未登录过,我想通过让last_login值等于NULL来反映在他的记录中。所以,NULL =“从未登录过。”
如果我是通过命令行或phpMyAdmin之类的东西向我的数据库添加新用户,我会输入以下查询。
INSERT INTO `test` (
`user_id` ,
`username` ,
`last_login`
)
VALUES (
NULL , 'test_person_1', NULL
);
这是该查询的结果。
+---------+---------------+--------------+
| user_id | username | last_login |
+---------+---------------+--------------+
| 1 | test_person_1 | NULL |
+---------+---------------+--------------+
现在,让我们使用FUEL的ActiveRecord
这是我的模型(足够简单):
<?php
class Model_Test extends ActiveRecord\Model {
public $primary_key = 'user_id';
public $table_name = 'test'; // Why does fuel want to pluralize table names? Grr.
}
这是一个将记录插入表中的控制器方法的超级基本示例。我知道我永远不会想要一遍又一遍地重复插入相同数据的动作。这只是一个考验。凉爽?
public function action_save_example1()
{
$o_user = new Model_Test(array(
'username' => 'test_person_2',
));
}
这是我在运行该方法后得到的结果:
mysql> select * from test;
+---------+---------------+---------------------+
| user_id | username | last_login |
+---------+---------------+---------------------+
| 1 | test_person_1 | NULL |
| 2 | test_person_2 | 0000-00-00 00:00:00 |
+---------+---------------+---------------------+
2 rows in set (0.00 sec)
请注意,test_person_2的DATETIME字段是“0000-00-00 00:00:00”,这不是NULL。即使我明确声明last_login为null,FUEL的ActiveRecord类也不会为null。实施例。
public function action_save_example1()
{
$o_user = new Model_Test(array(
'username' => 'test_person_2',
'last_login' => NULL
));
}
我感觉这是ActiveRecord正在运行的查询。
INSERT INTO `portal_links`.`test` (
`user_id` ,
`username` ,
`last_login`
)
VALUES (
NULL , 'test_person_2', ''
);
在插入或更新之前需要某种逻辑来测试值=== NULL,如果它是NULL,它应该使用关键字NULL而不是''。 CodeIgniter的ActiveRecord类似乎理解了NULL和''之间的区别。
<?php
// CodeIgniter Example
$o_query = $this->db->insert('test', array(
'user_id' => NULL,
'username' => 'code_igniter_user',
'last_login' => NULL
));
答案 0 :(得分:1)
这不是你问题的答案。但是AR已经或者只是失去了支持。查看新的orm包。文档正在制作中。
祝你好运。