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
'source' 카테고리의 다른 글
Mockito는 인수를 고려하지 않고 메서드를 스텁할 수 있습니까? (0) | 2022.11.15 |
---|---|
기본 Java 문자 인코딩 설정 (0) | 2022.11.15 |
Python의 자녀 클래스에서 부모 클래스의 메서드를 호출하려면 어떻게 해야 합니까? (0) | 2022.11.15 |
Maven 저장소에서 소스 JAR 가져오기 (0) | 2022.11.15 |
기능을 numpy 어레이에 매핑하는 가장 효율적인 방법 (0) | 2022.11.05 |