2013-08-09 4 views
0

우선 내가 그것을 호출하는 것을 힘든 시간 그림을 가지고이 질문의 이름 미안해 작업 :CakePHP의 두 컨트롤러/모델 모두의

Users 

Employees. 

이 두 데이터 테이블에 접속되는 1

이제 이들 모두는 모델 뷰 및 제어기를 갖는 관계

1. 이제 내 질문은 다소 어려운 부분으로 두 부분으로 나뉘어집니다.

직원이 새로운 사용자 (신입 사원)를 만들려고 할 때마다 먼저 users 테이블의 두 테이블에 데이터를 삽입해야합니다. employee 테이블

직원 테이블은 다음과 같습니다에 레코드를 추가 user_id :

users_idUsersuserid 사용자 테이블에서입니다
users_idUsers client_id 

,

어떻게이 문제를 해결할 수 있습니까? 내 모델에 다른 모델의 기능을 추가 할 수 있습니까?

두 번째 질문은 다소 이것의 확장이며 상대적으로 간단합니다. 그러나보기에서 사람의 사용자 이름을 볼 수 있도록보기는 사용자와 조인해야합니다.

나는 케이크에 아주 익숙하다. 그래서 나는 너희 중 일부가 나를 도울 수 있기를 바란다.

답변

2

두 모델을 연결하는 중입니다. CakePHP는 "마지막 삽입물에서 ID를 가져 와서 다른 것을 수행"할 필요없이이 모든 작업을 수행하는 견고한 관계 매퍼를 가지고 있습니다. 내가 잘못 본게 아니라면

, 문제는 간단한 용어에 넣어이다

CakePHP는 뭔가 "hasMany의"라는 한 1 대 다수 모델 관계를
An Employee hasMany users 

A User belongs to one Employee 

: http://book.cakephp.org/2.0/en/models/associations-linking-models-together.html#hasmany

이 글은 다음의 예를 들어 사용자가 많은 의견을 낼 수있는 것과 같은 방식. 직원은 많은 사용자를 생성 할 수 있습니다.

사용자와 근로자 사이의 관계를 역설적으로에, 당신은 "belongsTo를"매핑을 원하는 것, 그래서 당신은 사용자가 일부 직원이 추가 된 것을 알고 : http://book.cakephp.org/2.0/en/models/associations-linking-models-together.html#belongsto

당신은 무엇을 찾을 수있는이 방법 "사용자를 통해"검색하여 "사용자 X"를 추가 한 직원.

모델을 함께 매핑하면 데이터를 검색하는 것과 같은 관계 (findBy : http://book.cakephp.org/2.0/en/models/retrieving-your-data.html#findby)와 모델 관계를 관리하는 것이 관계가 연결되는 방식에 대해 많이 생각할 필요가 없기 때문에 훨씬 쉽게됩니다. 매핑은 위에 설명 된대로 수행됩니다.).

는 차례로 당신이 직관적으로

$this->Employee->find('all', array(
      'recursive' => 1, 
      'fields' => array('employee.name, employee.age') 
      )); 

등의 작업을 수행 할 수 있습니다 또는 사용자가 "사라"를 추가하는 것을 직원이 말을 찾을 싶어합니다.

$this->Employee->User->find('all', array(
'conditions' => array('User.name' => 'Sarah'), 
'fields' => 'Employee.*', 
'recursive' => 0)) 

직원들과 연관 배열을 돌려줍니다.

부작용 : 재귀 적 사용 = 1은 오래된 구식입니다. There is something much better called "Containable"을 사용하면 필요한 것을 기반으로 모델을 주입 할 수 있습니다. 이 문제의 범위를 벗어나지 만 언급 할 수는 있습니다.

+0

그래서 두 모델 모두에이 관계를 넣어야합니까? –

+0

ive에 코드를 추가하면 다음 오류가 발생합니다. SQL 쿼리 : SELECT'Employee'.users_idUsers','Employee'.client_id','User'.'id','User'.username 'user'.'passwords','User'.'role','User'.'created','User'.modified'' system_bloglic_com_test'''employees'''As''' Employee'' LEFT JOIN'system_bloglic_com_test' .'users' AS' User' ON ('User'.'employee_id' ='Employee'.'users_idUsers') WHERE 1 = 1 LIMIT 20 –

+0

그러나 SQL 문은 User.User.id = employees에 가입해야합니다. users_idUsers –