2012-04-03 2 views
0

여기 몇 가지 게시물을 읽었으며 잘못된 것을 알 수 없습니다. CodeIgniter 및 DataMapper

homes 
- id 
- address_id 
- price 
- etc... 

address 
- id 
- home_id 
- address1 
- address2 
- etc... 

그런 다음 내 모델 응축, 다음과 같이 :

내 DB는 다음과 같은 설정입니다.

home.php 
<?php 
class Home extends DataMapper { 
    public var $has_one = array('address'); 
} 

address.php 
<?php 
class Address extends DataMapper { 
    public var $has_one = array('home'); 
} 

그리고 내 컨트롤러는 다음을 사용 : 나는이 두 줄을 주석 경우

homes.php 
class Homes extends CI_Controller { 
    public function __construct() 
    { 
     parent::__construct(); 
     $this->load->library('datamapper'); 
    } 

    public function index() { 
     $homes = new Homes(); 
     $homes->include_related('address'); 
     $homes->get_iterated(); 

     $this->output->enable_profiler(TRUE); 

     _p($homes); // Self made function that wraps a print_r() in two <pre> tags. 
} 
} 

나는 표준 CI 반환 배열을 얻는다.

$homes->include_related('address'); 
$homes->get_iterated(); 

내가하지 않으면 서버 오류가 발생합니다. 이것은 DataMapper를 사용한 첫 번째 시간이며, 나는 모든 것을 잘못하고 있지만 거의 어디에서 시작해야할지 모르겠습니다.

UPDATE : 나는 내 문제를 파악

. DB 테이블 addressaddresses으로 바꾸고 address.php 모델을 지정해야했습니다. var $table = 'addresses';

모든 것을 수정했습니다.

답변

1

예 모델에서 테이블 이름을 지정할 수 있습니다. 또한 귀하의 예를 잘못이었다

$homes = new Homes(); 

$homes = new Home(); 

내가 보통 없는지 잘되어 있는지 확인하기 위해 내 모델 내에서 테이블 이름을 재정의 할 수 있습니다.

+0

나는 이것을 개발 한 후에 이것을 깨달았다. 나는 여전히 결과를 얻을 수는 없지만,이 시점에서 나는'$ has_many' 변수가 이것의 원인이라고 가정합니다.단일 결과를 얻을 수 있지만 관련 결과 목록이 작동하지 않습니다. – Seth

0

관계가 잘못되었습니다. 나는 당신이 일대일 관계를 설정하고 있다고 가정합니다. 사이먼이 말 :이 일대일 관계 http://datamapper.wanwizard.eu/pages/relationtypes.html

때문에 관계는 세 가지 방법으로 저장 될 수 있었다 :

  1. 하는 바와 같이, 노동자 테이블에. worker_id 전용 workers_workplaces에
  2. 과 직장 테이블에
  3. 은 열 ID, worker_id으로, 테이블을 조인하고

을 workplace_id 그러나 여기 당신은 * address_id의 * 에 및 추가 * home_id * in 주소. 사이에서 선택해야합니다. 예를 들어 * home_id *를 주소에 유지하고 가정에서 * address_id *를 제거하십시오.