2017-12-28 36 views
1

나는 다형성의 관계를laravel 다형성 관계 할당 모델

codes (code, soure_id, source_type) 

소스를 가지고있다. 나는의 다형성 관계

코드 테이블에 이러한 필드를 추가 설정 적절한 필드를 참조하십시오 해달라고

class Code extends Eloquent { 
    public function source() 
    { 
     return $this->morphTo(); 
    } 
}; 

class Book extends Eloquent { 
    public function codes() 
    { 
     return $this->morphMany(Code::class, 'source'); 
    } 
}; 

답변

1

:

$source = Book::first(); 

    $code = new Code() 
    $code->code = 'huxawex123ad' 
    $code->source ... // How can I assign the book as the source? 
    $code->save(); 

관계 :

는 어떻게 코드 소스를 지정할 수 있습니다 :

sourceable_id - integer 
sourceable_type - string 
당신의 컨트롤러에서 다음

class website extends Model 
{ 
    /** 
    * Get all of the website's codes. 
    */ 
    public function codes() 
    { 
    return $this->morphMany('App\Code', 'sourceable'); 
    } 
} 

:

관계 같은 것

$source = Book::first(); 

$code = new Code() 
$code->code = 'huxawex123ad' 
$code->source ... // How can I assign the book as the source? 
$code->save(); 

$source->codes()->save($code); 
+0

그게 내가 가진거야. 줄을 놓치고 있습니다 : $ code-> source ... // 어떻게 책을 출처로 지정할 수 있습니까? – Chris

1

MorphTo 관계 BelongsTo 관계와 유사하다. 코드가 수, 당신의 Book 모델은 morphMany() 관계를 반환하는 codes() 방법 설정을 가지고 가정,

$source = Book::first(); 

$code = new Code() 
$code->code = 'huxawex123ad' 
$code->source()->associate($source); 
$code->save(); 

또한 : 그래서, 당신의 Code 모델을 가정하는 것은 morphTo() 관계를 반환하는 source() 방법 설정을 가지고, 당신의 코드는 같을 것이다 다음과 같이 정리하십시오.

$source = Book::first(); 

$source->codes()->create(['code' => 'huxawex123ad']); 
+0

문제는 코드 행이 이미 있다는 것입니다. 새 코드 항목을 만드는 대신 관계를 추가해야합니다. – Chris

+0

그리고 associate가 실패합니다 : Class 'voluptates'not found ... 클래스가 App \ Models \ Book 여야하지만 – Chris