2

我在自定义命名空间上有 Eloquent 模型。我的意思是,例如,我的用户模型在Admin\User. 每个用户都有一个关联的成员或管理员。这些后来的模型与用户模型位于相同的命名空间:Admin\MemberAdmin\Admin.

我已将关系定义如下

namespace Admin;
use Illuminate\Database\Eloquent\Model as Eloquent;

class User extends Eloquent
{
    public function model()
    {
        return $this->morphTo();
    }
}

class Admin extends Eloquent
{
    public function user()
    {
        return $this->morphOne('Admin\User', 'model');
    }
}

class Member extends Eloquent
{
    public function user()
    {
        return $this->morphOne('Admin\User', 'model');
    }
}

我的问题是,当我这样做时:

$member = Member::find($id);

$member->userNULL

还有什么我需要定义的吗?有什么我想念的吗?

4

1 回答 1

1

对于未来的读者...

我之前使用命名空间模型遇到过这个问题。通过多态关系,Laravel 将 XXX-able_id 和 XXX-able_type 存储在表中。XXX-able_type 通常是模型的完全限定名,而不仅仅是类名。因此,在这种情况下,您需要检查该列中的值是否确实Admin\UserUser.

在您的情况下,重新迁移只是导致模型以其完全限定的名称插入,而不仅仅是类名。

希望这可以帮助。

于 2014-02-12T17:47:00.030 回答