2014-03-04 1 views
1

자습서 에서처럼 일대 다 관계를 만들고 싶습니다. 많은실제 외래 키가없는 일대 다 관계

일대 다 관계의 예에

~~~ 한 주석 "많은있다"고 블로그 게시물입니다. 우리는과 같이이 관계를 모델링 할 수 있습니다 :

class Post extends Eloquent { 

    public function comments() 
    { 
     return $this->hasMany('Comment'); 
    } 

} 

~~~

그래서 나는 모델 포스트 (테이블에 연결 "게시물")과 모델 코멘트를 만들고 싶어 (테이블 '의견'에 연결) . 나는 phpMyAdmin에서 테이블을 만들고 있는데, 마이그레이션이 아니라 (온라인 서버에서 SSH를 지원하지 않기 때문에). 주석 테이블에는 'posts_id'열이 있습니다.

내가 사용할 수 ... phpMyAdmin에있는 두 테이블 사이에 외래 키 관계를 정의 ..without

$comments = Post::find(1)->comments; 

?

그리고 대답이 예인 경우.

"post_id"또는 이와 유사한 내용을 내 'comments'테이블이나이 작업에 사용해야합니까? 당신이 정상적인 외래 키로 할 것처럼?

+0

왜 외래 키 관계를 정의하지 않으시겠습니까? 설정이 까다로울 수는 있지만 테이블 구조가 정확하고 올바르게 유지됩니다. 게시물을 참조하지 않는 고아 주석을 방지하고 게시물 이동/삭제 문제를 방지합니다. –

답변

1

외래 키로 외래 키를 명시 적으로 선언 할 필요는 없지만 적어도 외래 키로 Laravel에서 사용할 post_id 열을 생성해야합니다. 물론

, 당신은 당신이 원하는대로이 열 이름을 지정하고 관계의 선언을 지정할 수 있습니다 : 당신은 또한 데이터베이스의 견고성을 향상시키기 위해 phpMyAdmin을에서 외래 키로이 열을 선언 할 수 있습니다

class Post extends Eloquent { 

    public function comments() 
    { 
     return $this->hasMany('Comment', 'post_primary_key'); 
    } 

} 

그러나 그것은 Laravel 사업이 아닙니다.