1

연관성에 문제가 있습니다. 회사와 사용자라는 두 개의 테이블이 있습니다. 내 모델에서belongsTo 연관 삭제 작동하지 않음

User hasOne Company and Company belongsTo User (OneToOne) 

는, 내가 쓴 :

/* User.php Model */ 
public $hasOne = array(
    'Company' => array(
     'className' => 'Company', 
     'dependent' => true 
    ) 
); 

/* Company.php Model */ 
public $belongsTo = array(
    'User' => array(
     'className' => 'User', 
     'dependent' => true 
    ) 
); 

내 문제 : 내 CompaniesController에

$this->Company->delete($id, true) 

을 할 때 아이디 $ ID로 회사가 삭제 되나 관련 사용자는 그렇지 않습니다.

도와 주시겠습니까?

+0

데이터 모델이 사용자 hasOne Company _ (hasOne은 다른 연결과 공통된 공통성이 아님) _을 나타내십니까? 사용자 테이블에 company_id 열이 있습니까? 그렇다면 User belongsTo Company와 Company hasMany User가 있습니다. – AgRizzo

+0

내 사용자는 "회사"입니다. 하지만 회사가없는 관리자 사용자가 필요했습니다. 그렇기 때문에 admin 행의 User 테이블에 null 필드를 남기지 않고 두 개의 별표가있는 테이블을 사용하기로 결정한 것입니다. – SpaceDev

답변

0

belongsTo에는 'dependent'옵션이 없으므로 실제로 작동하는 유일한 방법은 다른 방법입니다.

사용자를 삭제하면 해당 사용자가 삭제됩니다.

기본적으로 상위를 삭제하면 종속 된 하위를 삭제할 수 있습니다. 그러나 자식을 삭제하는 것은 "종속"부모를 삭제할 수 없습니다 (Cake의 "종속 부모"의 경우에는 실제로 그러한 것이 없습니다). 여기

자세한 내용 : http://book.cakephp.org/2.0/en/models/associations-linking-models-together.html


당신은 (이 속한 결정하기 위해 각 테이블에서 필드를 필요로하는) ​​양 방향으로 연결을 실행하도록 선택할 수 있습니다. 이렇게하면 삭제 한 것과 관계없이 항상 다른 것을 삭제해야합니다.

또는 회사를 소유 한 사용자 만 삭제할 수 있습니다.

+1

회사 대신 사용자를 삭제하기로 결정했습니다. 정말 도움이 된 답변 해 주셔서 감사합니다. – SpaceDev