gpt4 book ai didi

mysql - 如何在 FUEL/ActiveRecord 中插入 NULL 值

转载 作者:行者123 更新时间:2023-11-29 14:52:25 26 4
gpt4 key购买 nike

简述:我尝试在 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 来反射(reflect)在他的记录中。因此,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.

}

这是一个将记录插入表中的 Controller 方法的 super 基本示例。我知道我永远不会想要一次又一次重复插入相同数据的操作。这只是一个测试。酷吗?

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类也使得in不为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
));

最佳答案

这并不是您问题的答案。但 AR 已经或刚刚失去了支持。查看新的 orm 包。文档正在制作中。

祝你好运。

关于mysql - 如何在 FUEL/ActiveRecord 中插入 NULL 值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5461735/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com