2012-06-15 4 views
0

현재 데이터베이스에서 아래 코드를 사용하여 제목을 부르지 만 기본 옵션의 내 관리 영역에서 모든 영역 (다른 행을 options 테이블에서 가져옴)을 구현하려고합니다. 내 웹 사이트.Codeigniter SQL 다목적 쿼리

이 작업을 수행하는 가장 좋은 방법은 무엇입니까? 제목 만 다른 함수를 만드시겠습니까? 나는 타이틀을 위해 foreach 루프를 실행하고 싶지 않기 때문에.

function systemOptions() 
{ 

    $query = $this->db->get('options'); 

    if($query->num_rows() > 0) 
    { 
     $row = $query->row_array(); 

     $row['cms_name']; 
    } 

    return $row; 
} 
+0

결과를 모두 반환하고 필요시 결과 개체에서 필요한 것을 추출하지 않는 이유는 무엇입니까? –

+0

@ 콜린 어떻게해야합니까? 나는 쉽게 알지만 혼란 스럽다. –

답변

1

나는 이렇게 할 것이다.

<?php 

/* 

CREATE TABLE `options` (
    `id` int(11) unsigned NOT NULL AUTO_INCREMENT, 
    `name` varchar(64) DEFAULT NULL, 
    `value` text, 
    PRIMARY KEY (`id`), 
    UNIQUE KEY `name` (`name`) 
); 

INSERT INTO `options` (`id`, `name`, `value`) 
VALUES 
(1, 'generic_keywords', 'This,is,my,generic.keywords'), 
(2, 'generic_description', 'This is a brief site summary'), 
(3, 'page_status_active', '1'), 
(4, 'page_status_draft', '2'), 
(5, 'page_status_invisible', '2'), 
(6, 'page_status_archived', '4'), 
(7, 'listing_length', '20'), 
(8, 'page_status_deleted', '9'); 

*/ 



function systemOptions() { 

    $options = FALSE; 
    $query = $this->db->get('options'); 

    if($query->num_rows() > 0) { 
     foreach($query->result() as $row) { 
      $data = new StdClass; 
      $data->{$row->name} = $value; 
      $options[] = $data; 
     } 
    } 

    return $options; 
} 

function systemOption($name) { 

    $query = $this->db->get_where('options', array('name' => $name), 1); 
    return ($query->num_rows() == 1) ? $query->row() : FALSE; 

} 
0

난 당신이 더 나은 모델의 모든 결과를 반환해야한다고 생각하고 콜린 말한대로 객체를 필요한 곳에 압축을 풉니 다 :

function systemOptions() 
{ 

    $query = $this->db->get('options'); 

    if($query->num_rows() > 0) 
    { 
     $row = $query->result(); 
    } 

    return $row; 
} 

당신은 컨트롤러에 인덱스 방법을 사용하려는 경우 :

public function index() 
{ 
    $data[row] = $this->example_model->systemOptions(); 
    $this->load->view('example_view', $data); 
} 

당신이보기 파일의 객체가 필요 때마다 아래의 코드를 사용

echo $row->cms_name; 
echo $row->title; 
+0

고맙지 만 메시지를 받는다. non-object의 속성을 얻으려고한다. –

+0

에코'$ row-> cms_name;과'echo row-> title; 데이터베이스의 어떤 열을 에코 할 수 있습니다. 데이터베이스에 cms_name이 있으면'$ row-> cms_name;을 검색하면 문제가 생길 것입니다. 너 무슨 소리하는거야? 그리고 그것은 당신의 데이터베이스에 있습니까?! 오류의 원인이되는 코드 줄을 공유하십시오. – Afshin

+0

물론 뷰를로드하는 과정에서 $ 데이터를 포함하는 것을 잊지 마십시오. '$ this-> load-> view ('example_view', $ data); ' – Afshin