1

시간 이후로 붙어있는 빠른 질문 :CakePHP - MVC 모델 연관 - 어떻게이 데이터 모델을 구성 할 수 있습니까?

내 cakePHP 웹 사이트 프로젝트 (버전 2.0 사용)에는 2 가지 모델이 있습니다. 그것들은 조금 애매해서 모델을 표준 블로그 포스트 모델로 변환 할 것입니다.

그래서 "게시물"모델과 많은 "카테고리"가 있습니다.

지금까지 그렇게 좋았습니다. 이제는 모든 카테고리에 정확히 하나의 (필수) '주요 게시물'이 있어야합니다.

어떻게 연결하나요?

  • '메인 포스트'모델이 있습니까? 그것은 게시물과 동일한 내용을 가지므로 중복되는 것처럼 보입니다.
  • 게시물의 부울 'is_main'열은 무엇입니까? 각 범주의 단 하나의 게시물 만 "주"가 될 수 있기 때문에 옳지 않은 것처럼 보입니다.
  • 카테고리의 'mainpost_id'열은 무엇입니까? 좋게 들리지만 "$ belongsTo"는 외래 키가 현재 클래스에 있도록 허용하는 유일한 연결입니다. 그리고 그 반대가 사실 일 때 카테고리 belongsTo Post가 나에게 틀린 것처럼 보인다고합니다. 또한 belongsTo는 many-to-one 연관이며, 내가 원한 것은 일대일 연관의 일종이다.

[insert name] 도와주세요. 너는 내 유일한 희망이야. ;)

편집 : "hasOne"관계가 있지만 같은 클래스에 $ hasOne X가 있고 다른 것으로는 표준이 아닌 외래 키가있는 것이 좋을 것 같습니다.

+0

'메인 포스트'의 목적은 무엇입니까? 빠른 해결책은이 목적을 위해 카테고리 테이블에 추가 필드를 추가하는 것입니다. 요구 사항이 변경되지 않을 것입니다 (WordPress의 카테고리 설명과 같은 종류입니까?) – Ross

+0

안녕하세요, 설명이 마음에 들지 않습니다. . 그 목적은 다른 데이터가 주어지지 않을 때 표시되는 일종의 포스터 자식을 갖는 것입니다. 그것은 다른 모든 게시물과 똑같습니다. 단지 특정 카테고리에 대해 "표준"이라고 가정합니다. – KonstantinK

답변

1

에서 자세한 내용을 참조 생각하는 것이 하나 개의 솔루션입니다 :

[ categories ] 
id 
name 
mainpost_id 

[ posts ] 
id 
category_id 
title 
text 
  • 카테고리 hasMany의 포스트
  • 포스트 belongsTo를 카테고리
  • 카테고리 hasOne 메인 포스트 (see code)
+0

내가 이것을 작동 시키면 완벽 할 것입니다. 이것을 시도 할 때 유일한 문제는 CategoriesController에서'$ this-> Category-> find();'를 호출 할 때'SQLSTATE [42S22] : Column not found : 1054 Unknown column 'Post를 리턴한다는 것이다.mainpost_id가 카테고리 모델이 아닌 게시물 모델에 있기를 기대하기 때문에 'on clause'의 'mainpost_id'를 찾으십시오. – KonstantinK

+0

글쎄, 확실한 해결책은'categories belongsTo MainPost'를 사용하고 나머지는 유지하라는 것입니다. 아직도 말하기에는 잘못 들리지만 지금 당장해야 할 일을합니다. Sooo ... thanks Tiu :) 아직도 누군가가 더 나은 대안을 생각하면 그것을 여기에 게시하십시오! – KonstantinK

0

난 당신이 .... hasAndBelongsToMany의 관계를 사용하여이 링크를 여기에 http://book.cakephp.org/2.0/en/models/associations-linking-models-together.html

+0

hasAndBelongsToMany는 다 대 다 관계를 모델링합니다. 실제로는 OP가 설명하는 것이 아닙니다. – eaj

+0

네, 그 경우에는 게시물에 많은 카테고리가 있고 그 반대의 경우가있는 것 같지 않습니다. 게시물에는 하나의 카테고리가 있으며, 각 카테고리에는 하나의 메인 포스트가 있습니다. 또는 내가 여기에서 볼 수없는 것이 있습니까? – KonstantinK