我在自定义命名空间上有雄辩的模型。我的意思是,例如,我的用户模型在Admin'User
.每个用户都有与之关联的成员或管理员。这些后来的模型与用户模型位于同一命名空间上:Admin'Member
和 Admin'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->user
是NULL
.
还有什么需要定义的吗?我错过了什么吗?
对于未来的读者...
我之前在命名空间模型中遇到过这个问题。通过多态关系,Laravel将XXX-able_id和XXX-able_type存储在表中。XXX-able_type通常是模型的完全限定名称,而不仅仅是类名。因此,在这种情况下,您需要检查该列中的值是否确实Admin'User
,而不仅仅是User
。
在您的情况下,重新迁移只是导致模型插入其完全限定名称,而不仅仅是类名。
希望这有帮助。