Laravel Morph许多关系-我想念什么?

时间:2019-08-01 09:24:27

标签: laravel

我有一个默认的users表,我将其更改为具有userable_typeuserable_id。我有各种模型,例如BursaryAdministratorBursaryProvider,用户可以属于其中任何一个。

BA / BP模型:

public function users() {
    return $this->morphMany('App\Users', 'userable');
}

用户模型:

public function userable()
{
    return $this->morphTo();
}

在迁移期间,我创建了一个默认的BursaryAdministratorBursaryProvider以及几个用户。我想将它们分配给每个:

$bp = \App\BursaryProvider::first();
$user = User::find(2);
$bp->users()->associate($user);

$ba = \App\BursaryAdministrator::first();
$user = User::find(3);
$ba->users()->associate($user);

但是,由于userable_type / userable_id字段为空,因此它们没有链接。我已经尝试了“关联”和“附加”。 正确的做法是什么?

2 个答案:

答案 0 :(得分:1)

您可以在关联后尝试save()用户,即:

$bp = \App\BursaryProvider::first();
$user = User::find(2);
$bp->users()->associate($user);
$user->save()

$ba = \App\BursaryAdministrator::first();
$user = User::find(3);
$ba->users()->associate($user);
$user->save()

答案 1 :(得分:1)

好,所以这是一天结束时的正确方法:

    $bp = \App\BursaryProvider::first();
    $user = User::find(2);
    $user->userable()->associate($bp);
    $user->save();

    $ba = \App\BursaryAdministrator::first();
    $user = User::find(3);
    $user->userable()->associate($ba);
    $user->save();

感谢@dparoli向我指出正确的方向。