2013-03-04 2 views
4

저는 Codeigniter Active Record를 사용하여 문제가 발생했습니다.이 정보를 파악하기에는 충분한 지식이 없습니다. 이전 코드에서Codeigniter Active Record Class Insert from

- 우리가 삽입을하고 삽입 내에서 우리가 선택을 할 FROM 나는 액티브 레코드를 사용하여이 작업을 수행하기 위해 노력했다

$this->db->query("INSERT INTO news_item_keywords_link (news_item_keyword, keyword) 
SELECT $version_id, keyword FROM news_item_keywords_link WHERE  news_item_keyword=$old_version 

삽입 한 필드의 값을 취득하고, 나는 그것을하는 방법 또는 액티브 레코드로 할 수 없다는 것을 알아낼 수 없다.

나는 몇 가지, 내 질문에 액티브 레코드를 사용하여 INSERT 문에서 인라인 FROM 어떻게 할 시도했다. 이 방법을 시도하고 구문 오류, 모든 제안을 얻을 작동하지 않았다.

if ($this->db->insert('news_item_keywords', Array(
        'news_item_keyword' => $version_id, 
        'keyword' => $this-db->select('keyword') 
           ->from('news_item_keywords') 
           ->where('news_item_keyword', $old_version); 
    ))) { 

기능을 확장하려면 ORM 라이브러리를 설치해야합니까? 그렇다면 어떤 ORM 라이브러리가 권장됩니까?

+1

표준 SQL 쿼리에 문제가? 그것은 훨씬 더 좋습니다, 활성 레코드는 쿼리 빌더입니다. 결과는 동일합니다 – tomexsans

+0

코드가 혼란 스럽습니다. – Denmark

답변

0

1 일 컨트롤러에서 모델을로드 ...

모델 :

function add($data){ 
$this->insert("tablename",$data); 
} 
function select_keyword($oldversion){ 
$this->db->select("keyword"); 
$this->db->where("news_item_keywords",$oldversion); 
$this->db->get("news_item_keywords"); 
} 

컨트롤러 :

function create(){ 

$data = array('news_item_keyword' => $version_id, 
       'news_item_keywords' => $this->modelname->select_keyword("oldversion") 
      ); 
$this->modelname->insert($data);//successful! 

} 
관련 문제