cakephp3 는 기본적으로 제약이 걸려 있어서 MVC 패턴이 적용되어 있고 그에 따라서 파일명을 붙일 때 여러가지 룰이 있다.
플러스!! 이름이 같은 경우, 예를 들어서 UsersController.php (Controller) 는 같은 이름의 UsersTable.php (Model) 과 User.php (Entity) 를 자동으로 참조하게 되어있다. 이름을 다르게 주거나 대소문자가 틀리거나 하면 꽤나 귀찮은 일이 벌어지더라..ㅠㅠ
근데 당연하게도 하나의 컨트롤러에 하나의 모델만 쓸 수는 없는 노릇이니..때로는 A 컨트롤러에서 B테이블에 있는 데이터를 참조하거나 조작하고 싶을 때가 있다. 그 때 필요한 건 TableRegistry 가 되겠다.
1. 작업할 컨트롤러 파일을 열어서 맨 위에 패키지를 추가한다.
> ****Controller.php 상단에 추가
|
use Cake\ORM\TableRegistry;
|
2. 작업할 컨트롤러의 initialize() 함수에서 참조할 테이블명을 입력해서 핸들러? 핼퍼? 를 생성한다.
> 더 보기
|
class UsersController extends AppController
{
public function initialize()
{
parent::initialize();
// Customers 테이블 조작할 수 있는 핸들러? 생성
$this->Customers = TableRegistry::get('customers');
}
// 다른 소스 생략..
// 필요한 부분에서 다음과 같이 사용 가능하다.
public function initialize()
{
$this->Customers->find()->all();
}
|
간단한 것 같은데 처음 하려고 하면 뭘 어찌..할지..모르겠다는 거 ㅋㅋㅋ
댓글
댓글 쓰기