在Laravel 4中保存一对一的多态关系

时间:2014-04-24 15:51:12

标签: php laravel laravel-4 eloquent

我在使用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');
}

这样我就会尝试保存与特定Proveedor模型关联的ProveedorTerminacion,但出于某种原因,我的表格中会创建ProveedorTerminacion行,但不会{ {1}}和Laravel不会显示任何错误并返回空响应,这有什么不对?

Proveedor

1 个答案:

答案 0 :(得分:12)

关联方法与morphTo无法正常工作,因为它永远不会设置morphable_type,所以不要使用它。我很确定你的代码应该抛出致命的错误。顺便说一下。它需要bugfix。

反过来反转创建关系并在可变形对象的上下文中执行:

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

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

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

我正在修理那个并在经过一些测试之后将PR发送到laravel repo。我会在完成后更新我的答案。

这是:https://github.com/laravel/framework/pull/4249