2014-06-13 4 views
0

저는 CakePHP 2.4를 처음 사용하고 다음과 같은 빌드를 시작하기 전에 제가 올바른 방향에 있는지 개념적으로 이해하고자합니다.CakePHP는 사용자의 비즈니스 계정으로 쿼리를 필터링합니다.

기본적으로 사용자가 온라인 계정에 처음 로그인하면 액세스 권한이있는 모든 계정에 대한 주문, 인보이스 및 문서가 표시됩니다. 계정 드롭 다운과 '이동'버튼을 사용하면 주문, 청구서 및 문서를 하나의 계정에만 필터링 할 수 있습니다.

현재 CakePHP 이전 버전입니다. 이것은 모두 쿼리 로직에서 처리됩니다. 사용자 계정 (N : N) 관계가 데이터베이스에 있습니다. 모든 활성 Account_Id는 SESSION에 저장됩니다. 이 작업을 수행 할 CakePHP는 무엇입니까?

모델은 다음과 같습니다

User hasAndBelongsToMany Accounts 
Account hasMany Orders 
Account hasMany Invoices 
Account hasMany Documents 

1.) 나는 ACL에서/인증 구성 요소 모델 (hasAndBelongsToMany의에서 사용자 및 계정 사이의 관계를 코딩) 나할까요 (사용자가 ARO이며, 계정은 ACO)?

2.) 모든 계정을 표시하려면이 필터를 "쿼리하여"각 모델에 적용하는 가장 좋은 방법은 무엇입니까? 아니면 모델/... 또는 ACL/Auth에 의해 자동으로 수행됩니까?

3. 계정 하나만 표시하려면 세션에 ID를 저장하는 것이 가장 좋은 방법입니까? Orders, Invoices 및 Documents Controller 각각에서 새로운 작업 세트에 대해 생각해야합니까?

답변

0

모든 검색어를 명확하게하는 CakePHP 요리 책에 대한 링크 모음을 제공합니다 : 먼저 linking models에 관해 읽어야합니다.

다음 일이 그 단계는 당신이해야 할 모든 단지 play arround with data you get from your models

당신이 해달라고 솔직히 말해서 후 또 다른 단계는 "baking" your models/controllers/ views

입니다 CakePHP conventions

다음의 올바른 데이터베이스와 테이블을 만드는 Cake가 감지하고 대화 형 쉘을 통해 관계를 구축하는 corect foreing 키 이름을 사용하여 데이터베이스를 올바르게 작성한 경우 모든 관계를 코드화하십시오 (콘솔이 케이크 굽기를 통해 관계를 작성하는지 묻는 메시지가 표시됩니다).

$this->ModelName->find('all') 

는 관련 데이터없이 MODELNAME의 데이터 만 PIN이하는 모델을 만들 것입니다

$this->ModelName->recursive=-1 

를 사용하여 당신에게 주어진 MODELNAME의 모든 데이터와 모든 관련 데이터, 을 줄 것이다.

실용적으로 실제로는 몇 가지 작업을 수행 할 수 있지만 단순히 구현해야 할 작업이 있습니다. 희망이 도움이됩니다.

+0

감사합니다. scx. 물론 나는 cakephp에 대해 꽤 많이 읽었습니다. 나는 이것을 사용자 및 계정의 예에 어떻게 적용 할 수 있는지 혼란 스럽습니다. 필자가 설명한 기능에 대해 계정을 Auth/ACL로 구축해야합니까? 모든 계정 또는 하나의 계정에 필터를 적용하는 가장 좋은 방법은 무엇입니까? 빠른 응답에 감사합니다! – user3739152