2014-04-24 45 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

相關方法無法正確使用morphTo,因爲它從不設置morphable_type,所以請勿使用它。順便說一句,我很確定你的代碼應該會引發致命的錯誤。它需要bugfix。

而是反轉創建關係,做到在可變形對象的上下文:

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

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

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

我在修這和去一些測試後,一個PR發送到laravel回購。完成後我會更新我的答案。

這就是:https://github.com/laravel/framework/pull/4249

+0

哇答案!這是StackOverflow應有的答案 –