Laravel Eloquent多态一对一?

Ben*_*nRH 20 polymorphic-associations laravel eloquent laravel-4

我正在尝试建立一个多态一对一的关系(has_one和belongs_to的多态等价物).我有一个Address模型,还有其他几个我希望有一个地址的模型.但是,我对文档的措辞感到困惑.我已经看过这个morphMany方法,但我的问题是:我应该使用morphMany即使我只想要它有一个地址,还是有类似morphOne我应该使用的方法?

编辑:我的Address模型有这些字段,只是为了帮助可视化:

Schema::create('addresses', function ($table)
{
    $table->increments('id');
    $table->string('street');
    $table->string('street_more')->nullable();
    $table->string('city');
    $table->string('state')->nullable();
    $table->string('country');
    $table->string('postal_code');
    $table->integer('addressable_id');
    $table->string('addressable_type');
});
Run Code Online (Sandbox Code Playgroud)

mar*_*nuy 25

是的,有一个morphOne方法,我认为在这种情况下你应该使用它:https://github.com/laravel/framework/blob/5.2/src/Illuminate/Database/Eloquent/Model.php#L811.

你也可以使用

$table->morphs('addressable');
Run Code Online (Sandbox Code Playgroud)

代替

$table->integer('addressable_id');
$table->string('addressable_type');
Run Code Online (Sandbox Code Playgroud)

我在L4的自定义包中使用了morphOne,效果很好.

  • 那很棒!那时候还没有记录.非常感谢你.Re:`$ table-> morphs`,我觉得把它们分别贴在那里更具可读性,但是谢谢:) (3认同)
  • 谢谢你的回答.我认为该功能现在称为"morphOne"https://github.com/laravel/framework/blob/master/src/Illuminate/Database/Eloquent/Model.php#L792 (2认同)