source

CodeIgniter의 ActiveRecord를 사용하여 열 값이 NULL이 아닌 행을 선택하려면 어떻게 해야 합니까?

manycodes 2022. 11. 15. 21:33
반응형

CodeIgniter의 ActiveRecord를 사용하여 열 값이 NULL이 아닌 행을 선택하려면 어떻게 해야 합니까?

CodeIgniter의 Active Record 클래스를 사용하여 MySQL 데이터베이스를 쿼리하고 있습니다.필드가 NULL로 설정되지 않은 테이블의 행을 선택해야 합니다.

$this->db->where('archived !=', 'NULL');
$q = $this->db->get('projects');

그러면 다음 쿼리만 반환됩니다.

SELECT * FROM projects WHERE archived != 'NULL';

archived필드는DATE들판.

이 문제를 해결할 더 좋은 방법이 있을까요?쿼리를 직접 작성할 수 있지만 코드 전체에 걸쳐 Active Record를 유지하고 싶습니다.

where('archived IS NOT NULL', null, false)

액티브 레코드는 확실히 기묘한 점이 있다.어레이를 에 전달하면$this->db->where()이 함수는 IS NULL을 생성합니다.다음은 예를 제시하겠습니다.

$this->db->where(array('archived' => NULL));

생산하다

WHERE `archived` IS NULL 

이상한 점은 부정적인 것과 동등한 것이 없다는 것이다.IS NOT NULL그러나 올바른 결과를 얻으면서도 여전히 진술을 회피하는 방법이 있습니다.

$this->db->where('archived IS NOT NULL');

생산하다

WHERE `archived` IS NOT NULL

코드 시그니터 3

한정:

$this->db->where('archived IS NOT NULL');

생성되는 쿼리는 다음과 같습니다.

WHERE archived IS NOT NULL;

$this->db->여기서 ('archive IS NOT NULL', null, false); << 불필요

역:

$this->db->where('archived');

생성되는 쿼리는 다음과 같습니다.

WHERE archived IS NULL;

Null을 문자열로 설정할 수 없습니다...

$this->db->where('archived IS NOT', null);

null이 따옴표로 둘러싸여 있지 않으면 올바르게 동작합니다.

다음을 사용하는 것이 훨씬 좋습니다.

for는 null이 아닙니다.

where('archived IS NOT NULL', null);

for는 null입니다.

where('archived', null);

그리고 또 다른 옵션을 제공하기 위해NOT ISNULL(archived)WHERE 필터로 사용합니다.

Codeigniter는 파라미터를 지정하지 않고 콜을 종료함으로써 "IS NULL" 쿼리를 생성합니다.

$this->db->where('column');

생성되는 쿼리는 다음과 같습니다.

WHERE `column` IS NULL

$this->db->or_where('end_date IS', 'NULL', false);

다음을 수행할 수 있습니다(NULL을 테스트하는 경우).

$this->db->where_exec('archived IS NULL) 

NOT NULL을 테스트하는 경우

$this->db->where_exec('archived IS NOT NULL) 

모델에서 다중 위치를 사용하는 경우 다음과 같이 하십시오.

function getCommonRecords($id, $tbl_name, $multi_where='') {
    $this->db->select('*');
    $this->db->where('isDeleted', '0');
    if ($id > 0) {
        $this->db->where('id', $id);
    }
    if ($multi_where != '') {
        foreach ($multi_where as $key => $val) {
            $this->db->where($key, $val);
        }
    }
    $queryResult = $this->db->get($tbl_name);
    return $queryResult->result_array();
}

다음으로 multi where 조건을 계산할 때 두 번째 파라미터를 바이패스하는 구문을 사용할 것을 권장합니다.

 $this->api->getCommonRecords(NULL,'contracts', ['id' =>,'party1Sign IS NOT NULL'=>NULL,'party2Sign IS NOT NULL'=>null]);

두 열이 null인지 여부를 확인하는 한 가지 방법은 다음과 같습니다.

$this->db->where('archived => TRUE);
$q = $this->db->get('projects');

php에서 컬럼에 데이터가 있는 경우 True로 표시될 수 있습니다.그렇지 않으면 False 명령에서 다중 비교를 사용하고 컬럼 데이터가 null이 아닌지 확인하려면 다음과 같이 하십시오.

다음은 내가 where 절(Codeignitor)의 열을 필터링하는 방법의 완전한 예입니다.마지막에는 Not NULL Compression이 표시됩니다.

$where = array('somebit' => '1', 'status' => 'Published', 'archived ' => TRUE );
$this->db->where($where);

언급URL : https://stackoverflow.com/questions/2489453/how-to-select-rows-where-column-value-is-not-null-using-codeigniters-activereco

반응형