2014-04-24 10 views
2
Laravel 4 다형성 일대일 관계를 저장하는 동안 나는 몇 가지 문제가 있어요

이 내 모델 :저장 Laravel의 일대일 다형성 관계는 4

namespace App\Models\Proveedores; 

class Proveedor extends \Eloquent { 

public function proveedorable() { 
    return $this->morphTo('proveedorable', 'proveedorable_type', 'proveedorable_id'); 
} 

그리고 이것은 특정 모델 :

namespace App\Models\Proveedores; 

class ProveedorTerminacion extends \Eloquent { 

public function proveedor() { 
    return $this->morphOne ('App\Models\Proveedores\Proveedor', 'proveedorable', 'proveedorable_type', 'proveedorable_id'); 
} 

이 방법은 내가 특정 ProveedorTerminacion 모델과 관련된 Proveedor을 저장하기 위해 노력하고있어,하지만 어떤 이유로 ProveedorTerminacion에 대한 행 내 테이블에 생성됩니다,하지만 Proveedor 및 Laravel가 표시되지 않습니다 오류가 있으면 빈 응답을 반환합니다. 잘못된?

$terminador = ProveedorTerminacion::create (Input::all()); 

$proveedor = new Proveedor; 
$proveedor->fill (Input::all()); 

$proveedor->proveedorable()->associate ($terminador); 

$proveedor->save(); 
+1

내가 PR 링크 –

답변

12

morphable_type을 절대로 설정하지 않기 때문에 연관 메서드가 morphTo와 올바르게 작동하지 않으므로 사용하지 마십시오. 그건 그렇고 코드가 치명적인 오류를 던져야한다고 확신합니다. bugfix가 필요합니다.

대신 관계를 만드는 반전과 morphable 객체의 맥락에서 그것을 할 :

$terminador = ProveedorTerminacion::create (Input::all()); 

$proveedor = new Proveedor; 
$proveedor->fill (Input::all()); 

$terminador->proveedor()->save($proveedor); 

내가 그 고정 몇 가지 테스트 후 laravel의 REPO에 PR을 보낼거야. 완료되면 답변을 업데이트하겠습니다.

는 여기있다 : https://github.com/laravel/framework/pull/4249

+0

와우와 답을 갱신! 그 종류의 답변 StackOverflow 가치가 대답 –