generateList()는 모델 사이의 연관이 정의되어 있는 경우(A라는 모델과 B라는 모델이 belongsTo 라는 연관으로 묶여 있는 상태에서) 외래키를 보고 대상이 되는 모델의 리스트를 뽑아와서 셀렉트 박스 형태로 뿌려 줄 때 유용합니다.(이런 조금 헷갈리네요.) 책을 새로 등록할때 책을 쓴 저자명을 등록하는데 저자명을 셀렉트 박스 형태로 뿌리고 싶은 경우입니다. 그런데 설명에 나와있는대로 하니까 에러가 나옵니다.
구글링해서 찾은 정보입니다. find('all') 보다 find('list') 형태로 받아와야 작동을 한다라고 되어 있는데요. /app/app_model.php 라는 파일을 만들고 아래 함수를 추가해 주면 됩니다.
<?php
class AppModel extends Model {
function getlist ($cond=null,$order=null,$limit=null,$key=null,$val=null) {
return $this->find("list",array(
'conditions' => $cond,
'order' => $order,
'limit' => $limit,
'fields' => array(str_replace('{n}.','',$key), str_replace('{n}.','',$val))
));
}
}
?>
class AppModel extends Model {
function getlist ($cond=null,$order=null,$limit=null,$key=null,$val=null) {
return $this->find("list",array(
'conditions' => $cond,
'order' => $order,
'limit' => $limit,
'fields' => array(str_replace('{n}.','',$key), str_replace('{n}.','',$val))
));
}
}
?>
이제 generateList() 대신 getlist() 라고 사용하시면 됩니다. 이때 코딩 형식은
getlist(null, null, null, '{n}.ModelName.key', '{n}.ModelName.value');
위와 같이 해주시면 됩니다. 1.2메뉴얼에 설명이 되어 있군요....^^
혹시 회사에서 cakePHP를 쓰시는건가요??
답글삭제저도 지난주에 find("list"...)를 알게 되어서 즐겁게 쓰고 있는데...
방갑네요 :)
@innis - 2008/10/07 18:39
답글삭제아.. 저도 본격적으로 사용하기 시작한지는 얼마 되지 않습니다. 반갑습니다...^^