2011-03-28 4 views
0

간략한 설명 : FUEL 포럼에서 이것을 묻는 중 시도했지만 등록하려고 할 때마다 포럼에 "활성화 이메일 전송 실패"메시지가 표시되고 기록 할 수 없습니다. 또는 내 계정을 재설정하십시오. 잘하면 여기 사람들이 그것을 확인합니다. 이전에이 사이트에서 FUEL 개발자를 보았습니다.FUEL/ActiveRecord에 NULL 값을 삽입하는 방법

CREATE TABLE `test` (
    `user_id` INT UNSIGNED NOT NULL AUTO_INCREMENT PRIMARY KEY , 
    `username` VARCHAR(128) NULL , 
    `last_login` DATETIME NULL 
) ENGINE = InnoDB 

분명, 여러분의 많은과는 달리, 나는 개인적으로 데이터베이스의 NULL 값을 활용하고자 : 여기

는 예를 들어 MySQL의 테이블입니다. 평신도의 용어에서 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  | 
+---------+---------------+--------------+ 

,의는 연료의 액티브 여기

가 (아주 간단) 내 모델 사용하자 : 여기

<?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 
)); 

답변

1

아니요, 귀하의 질문에 대한 답변이 아닙니다. 그러나 AR은 지원을 잃었거나 막 잃어 버렸습니다. 새로운 orm 패키지를 살펴보십시오. 문서 작성 중입니다.

행운을 빈다.

+0

우리가 그 AR을 죽인 것을 기쁘게 생각합니다. 그것은 제 3 자 였고 API가 좋았지 만 꽤 약했다. ORM이 훨씬 좋습니다. –

관련 문제