2014-05-16 3 views
0

내 프로젝트에는 내 db에 사용자 및 계정이라는 2 개의 entites가 있습니다. 한 사용자는 하나의 account를 가지고 있습니다. 사용자 테이블은 account 엔티티를 참조하는 foreign key로 account_id 필드를 가지고 있습니다. 나는 사용자를 위해 자동으로 새 계정을 생성 중입니다. 내가 예상 한대로 모든 것이 만들어집니다. 그러나 어떻게 바늘 모양의 사용자 계정을 참조 할 수 있습니까? 여기Redbeanphp와 일대일 관계

public function register ($data = null) 
{ 
    if ($data != null) { 
     try { 
      $user = R::dispense('user'); 
      $user->name = $data['name']; 
      $user->lastname = $data['last-name']; 
      $user->username = $data['username']; 
      $user->password = $data['password']; 
      $user->email = $data['email']; 
      $user->city = $data['city']; 
      $user->country = $data['country']; 
      //create account for user 
      $account = R::dispense('account'); 
      $account->account_no = $this->genAccountNumber(); 
      $account->money_sum = 0; 
      $user->account = $account; 
      $id = R::store($user); 
      return $id; 
     } catch (Exception $e) { 
      echo $e->getMessage; 
     } 
    } 
} 

단지 사용자 테이블에 외래 키로 ACCOUNT_ID 필드를 추가, 어떤 도움 대신 사용자 콩 외국 기준으로 계정 콩을주는

+0

참조를 위해 [매뉴얼] (http://redbeanphp.com/complex_relations#one-to-one)을 참조하십시오. – kekub

답변

-1

에 감사겠습니까 내 등록 스크립트입니다.

public function register ($data = null){ 
if ($data != null) { 
    try { 
     $user = R::dispense('user'); 
     $user->name = $data['name']; 
     $user->lastname = $data['last-name']; 
     $user->username = $data['username']; 
     $user->password = $data['password']; 
     $user->email = $data['email']; 
     $user->city = $data['city']; 
     $user->country = $data['country']; 
     //create account for user 
     $account = R::dispense('account'); 
     $account->account_no = $this->genAccountNumber(); 
     $account->money_sum = 0; 
     $account_id = R::store($account); 
     $user->account_id = $account_id; // this is the line you have to change 
     $id = R::store($user); 
     return $id; 
    } catch (Exception $e) { 
     echo $e->getMessage; 
    } 
}} 

그리고 빈을로드 할 때

$account = $user->account; 
+0

이것은 올바르지 않습니다. 제안한 변경으로 인해 $ user-> account가 작동하는 데 필요한 외래 키 관계가 작성되지 않습니다. – charliefortune

0

당신 (일대일 또는 일대 다 maaping가있는 경우 제약 조건이있는)를 사용자가 직접 콩 에서 계정 인스턴스에 액세스 할 수 있습니다 아무 것도 변경할 필요가 없습니다 - 당신의 방법은 정확합니다. 라인

$user->account = $account; 

그것을 할 올바른 방법 - 당신은 유체 모드에서 실행중인 가정, 스키마가 당신을 위해이 방법을 외래 키 관계를 만들기 위해 자동으로 업데이트됩니다.

계정에 액세스하려면 $ user-> account를 사용해야합니다.

echo $user->account; 

에는 계정 빈의 모든 속성이 표시됩니다.