2013-01-06 1 views
1

프레임 워크를 배우는 데 CakePHP를 사용하여 매우 간단한 블로깅 응용 프로그램을 작성하고 있습니다. 블로그 게시물은 많은 태그를 가질 수 있으며 태그는 StackOverflow와 같은 많은 블로그 게시물에 속할 수 있습니다. 여기에 외부 키 내 데이터베이스 스키마는이를 반영하는 것 :CakePHP 블로그에 자동으로 게시물 및 태그 관계 만들기

enter image description here

내가 CakePHP는 (? 나는이 그것을 할 올바른 방법이라고 생각) 내 PostTag 모델 사이에 hasAndBelongsToMany 관계를 설정하는 다음과 같습니다

class Post extends AppModel { 
    public $name = 'Post'; 

    public $hasAndBelongsToMany = array(
     'Tag' => 
      array(
       'className'    => 'Tag', 
       'foreignKey'    => 'post_id', 
       'associationForeignKey' => 'tag_id', 
       'unique'     => true 
      ) 
    ); 
} 

class Tag extends AppModel { 
    public $name = 'Tag'; 

    public $hasAndBelongsToMany = array(
     'Post' => array(
      'className'    => 'Post', 
      'foreignKey'    => 'tag_id', 
      'associationForeignKey' => 'post_id', 
      'unique'     => true 
     ) 
    ); 
} 
나는 또한 추가 게시물에 대한 설정 정말 간단한 페이지가

, 즉에 대한 뷰가 다음과 같습니다

<h1>Add blog post</h1> 

<?php echo $this->Form->create('Post'); ?> 
<?php echo $this->Form->input('title'); ?> 
<?php echo $this->Form->input('body'); ?> 
<?php echo $this->Form->input('slug'); ?> 
<?php echo $this->Form->end('Publish'); ?> 

제 질문은, 태그 이름을 공백으로 구분하여 입력 할 수있는 입력 필드가있는 페이지를 추가 한 다음 케이크가 자동으로 내 데이터베이스에서 관계를 만들도록 할 수 있습니까? StackOverflow가하는 것처럼 많이합니다.

답변

0

그것은 정확히를하고있다 https://github.com/cakedc/tags

밖으로 우리의 플러그인을 확인하고 당신은 단지 몇 줄을 통합 할 수 있습니다.

+1

제안 해 주셔서 감사합니다.하지만 차라리 직접 구현하고 싶습니다. 내가 배우는 목적으로 이것을하고 있다고 말했듯이, 플러그인을 드래그하면 많이 가르치지 않을 것입니다. 코드를 살펴 보겠습니다. 감사합니다! –

1

나는 필드를 HABTM 기능 에서

"joinTable" => "post_tags"; 

을에 "post_tags을"테이블 이름 "posts_tags"를 변경하고 추가하는 것이 좋습니다 당신이 어떻게 태그를 추가? 같은보기 또는 다른보기에서 ??