Laravel eloquent 扩展模型

Laravel eloquent extending model

我有默认用户模型。现在我有另一个 table 给管理员。有没有办法从管理员模型 return 用户字段(因为管理员正在扩展用户)?我找到了这个例子,但是当 admin_id 出现在用户模型中时。我在这里有一对一的关系。

class Admin extends User
{
    protected $table = 'users';

    public static function boot()
    {
        parent::boot();

        static::addGlobalScope(function ($query) {
            $query->where('is_admin', true);
        });
    }
}

这是我找到的例子。当我的管理模型位于不同的 table.

时,我不确定如何从我的管理模型中 return 用户字段

关键是我希望能够做这样的事情(来自用户的调用方法):

Admin::first()->posts()

帖子方法不在管理员 class 上,而是在用户 class 上。

编辑:

更好地解释它。我有两个 tables,用户和管理员。它们以一对一的关系连接,所以我可以这样做:

$admin = Admin::first();
$posts = $admin->user()->posts();

但由于管理员应该拥有用户 table 的所有字段和管理员 table 的另一个字段,我正在寻找一种方法来做到这一点:

$admin = Admin::first();
$posts = $admin->posts();

我不想向用户添加管理员或其他内容 table,我仍想使用管理员 table,因为稍后我将需要更多字段。

如果两个表具有相同的 ID,请使用特征来定义您的关系:

trait UserRelationships {
    public function posts() {
         return $this->hasMany(Post::class, 'user_id');
    }
}

class Admin {
    use UserRelationships;
}

class User {
    use UserRelationships;
}

您只需确保在关系中明确声明外键名称。

您还可以扩展用户模型并覆盖 $table 属性 但这可能会因各种原因出现问题,因为 User 属性存在于用户关系中而不是 Admin模特。