2014-11-06 2 views
0

나는 laravel 외부의 웅변에서 am : m 관계를 설정하고 레코드를 가져올 수 있었지만 피벗 테이블을 만들지 않으므로 새 레코드를 추가하는 방법을 알지 못합니다. 코드.외계인 loravel에서 m : m 관계로 작업하기

내 수업 인 경우 작성자와 게시자 간의 M : M 관계에 어떻게 새 인스턴스를 추가 할 수 있습니까?

<?php 

include 'eloquent_database.php'; 
class Publisher extends Illuminate\Database\Eloquent\Model { 
    public $timestamps = false; 
    protected $table = 'publisher'; 
     protected $primaryKey = 'publisher_id'; 

     public function authors(){ 
      return $this->belongsToMany('Author', 'author_publisher', 'publisher_id', 'author_id'); 
     } 
} 

class Book extends Illuminate\Database\Eloquent\Model { 
    public $timestamps = false; 
    protected $table = 'book'; 
     protected $primaryKey = 'book_id'; 

     public function author() { 
      //related table name, pk in current table, 
      return $this->belongsTo('Author', 'author_id'); 
     } 
} 
// Create the company model 
class Author extends Illuminate\Database\Eloquent\Model { 
    public $timestamps = false; 
    protected $table = 'author'; 
    protected $primaryKey = 'author_id'; 

    public function books() 
    { 
     //related table, fk IN related table, 
     return $this->hasMany('Book', 'author_id'); 
    } 

public function publishers(){ 
      return $this->belongsToMany('Publisher', 'author_publisher', 'author_id', 'publisher_id'); 
     } 

} 

나는 또한 삭제하는 방법을 알아야 할 것입니다. 나는이 문서를 보았습니다 http://laravel.com/docs/4.2/eloquent#working-with-pivot-tables 그러나 나는 그다지 따르지 않습니다.

이드는 새로운 인스턴스를 추가하고 삭제하는 방법에 대한 예를 실제로 설명합니다. 또한 onine 많은 다른 버전이있을 seeems의 전 작품을 코드로 따라하지만 난 워드 프로세서에서 그것을 얻을 didnt가있는 문서 찾기가 힘들다 - 사전에

감사에게 단지 시행 착오를 많이

편집 :

in Repays to Rays comment 저자의 ID와 게시자 ID가있는 author_publisher라는 피벗 테이블이 데이터베이스에 있지만이 피벗 테이블을 사용하는 방법을 알지 못합니다. 그것을위한 수업을 만들어야합니까? 나는 정말로 이해하지 않는다

위의 코드에서 위의 테이블에 대한 참조가있다. return $ this-> belongsToMany ('Author', 'author_publisher', 'publisher_id', 'author_id');

답변

0
  1. M : M 관계가있는 경우 작성자와 게시자 간의 관계를 변환하는 테이블이 있어야합니다. 예제 테이블은 author_id 및 publisher_id를 모두 포함하는 항목으로 구성 될 수 있습니다. 당신이 제공 한 것에서 그런 탁자가 부족합니다.

  2. 이러한 테이블이없는 경우가 있습니다. 이러한 M : M 관계가 작동하려면 간단하게 작성자 테이블에 "publisher_id"라는 열이 있어야합니다. 마찬가지로 게시자 테이블에는 'author_id'라는 열이 있어야합니다. 그런 다음 저자 모델에서 $ this-> hasMany ('Publisher', 'author_id')를 반환하고 게시자 모델에서 $ this-> hasMany ('Author', 'publisher_id')를 반환합니다. 정답을 얻어야합니다.

관련 문제