我在自定义命名空间上有Eloquent模型。我的意思是,例如,我的用户模型位于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
。
我还需要定义什么?有什么我想念的吗?
答案 0 :(得分:1)
对于未来的读者......
我在使用命名空间模型之前遇到过这个问题。通过多态关系,Laravel将XXX-able_id和XXX-able_type存储在表中。 XXX-able_type通常是模型的完全限定名称,而不仅仅是类名。因此,在这种情况下,您需要检查该列中的值是否确实为Admin\User
,而不仅仅是User
。
在您的情况下,重新移动只会导致模型插入其完全限定名称,而不仅仅是类名。
希望这有帮助。