2009-08-30 4 views
4

간단한 질문을하는 방법을 이해할 수 없다 :에 BelongsTo 문제는, 내가 CakePHP의 멍청한 놈에 의해 그

내가 두 가지 모델, 선수 및 팀이있다.

팀에 id (int) 및 cool_name (varchar)이 있습니다.

플레이어에는 id (int), cool_name (varchar) 및 team_id (int)에 대한 참조가 있습니다.

영어 대신 테이블이 없으므로 이름 대신 Cool_name이 사용되므로 'name'필드를 사용할 수 없습니다.

그래서 한 팀에 많은 플레이어와 플레이어의 belongsTo 팀이 있습니다.

내 플레이어 모델 :

class Player extends AppModel { 
    var $name = 'Player'; 
    var $belongsTo = array('Team'); 
} 

(팀 모델은 내부의 이름이 아닌 아무 상관이 없음)

PlayersController :

//... 
echo $form->input('squadra_id'); 
//... 
: 플레이어의 추가보기에서

class PlayersController extends AppController { 
    var $name = 'Players'; 

    function add() { 
      $this->set('teams', $this->Player->Team->find('list')); 
    //then save... 
    } 

좋아, 그래서 팀 ID가있는 셀렉트를 가지고 있습니다; 나는 ID,하지만 팀의 이름을 원하는 다음 ID를 저장하지 : (HTML에서) 같은

<select name="data[Player][team_id]" id="PlayerTeamId"> 
<option value="1">Cool Name 1</option> 

<option value="2">Cool Name 2</option> 
<!-- --> 
<option value="{team id}">{team cool name}</option> 
</select> 

내가 어떻게 할 수 있습니까?

  • 솔루션-

대신이

$this->set('teams', $this->Player->Team->find('list', array('fields' => array('cool name')))); 

답변

1

당신이 당신의 Team 모델에 대한 find('list')을 다하고 있기 때문에 그 모델을 넣어

$this->set('teams', $this->Player->Team->find('list')); 

가있는 name 속성 (CakePHP가 기본적으로 표시 필드로 인식 함)을 가져 오려면 반환해야 할 것은 키가 팀 ID이고 값이 팀 이름 인 연관 배열입니다. 변수 배열에 teams과 Cake라는 이름의 배열을 설정한다는 사실과 함께하면됩니다. 양식에서

, 나는 'squadra_id' 어디에서 왔는지 모르겠지만, 'teams'에 그 변경하고 멋지게 선택 목록 채우기를 참조한다 : 내가 제대로 이해하면

echo $form->input('teams'); 

, 당신이 올바른 모든 것을 가지고 보기에서 입력 정의를 제외하고이 "마법"을 사용 가능하게하십시오. find('list')을 사용하여 http://book.cakephp.org/view/189/Automagic-Form-Elements에 선택 상자를 자동으로 채우는 방법에 대해 자세히 알아볼 수 있습니다.

희망이 도움이됩니다.

+0

아, 미안 해요. 이탈리아어에서 영어로 예제를 번역하여 "nome"이 "name"이되도록했습니다. 그런 이유로 magic이 작동하지 않습니다 (이것은 'squadra_id' , 그것은 'team_id'의 번역입니다) 나는 그 글에서 그것을 바로 잡을 것입니다. 그 동안 도움을 주셔서 감사합니다. – apelliciari

0

데이터가 belongsTo 모델로 유효성을 검사하지 않습니다!나는 team_id를 사용할 수 있으며 작동한다 !!