[英]Laravel eloquent extending model
我有默認的用戶模型。 現在我有另一個管理員表。 有沒有辦法從管理模型返回用戶字段(因為管理員正在擴展用戶)? 我找到了這個例子,但是當 admin_id 出現在用戶模型中時。 我這里是一對一的關系。
class Admin extends User
{
protected $table = 'users';
public static function boot()
{
parent::boot();
static::addGlobalScope(function ($query) {
$query->where('is_admin', true);
});
}
}
這是我找到的例子。 當我的管理模型在不同的表上時,我不確定如何從它返回用戶字段。
關鍵是我希望能夠做這樣的事情(來自用戶的調用方法):
Admin::first()->posts()
post 方法不在 Admin 類上,而是在用戶類上。
編輯:
為了更好地解釋它。 我有兩個表,用戶和管理員。 它們以一對一的關系連接,所以我可以做這樣的事情:
$admin = Admin::first();
$posts = $admin->user()->posts();
但由於 Admin 應該有來自 users 表的所有字段和來自 admins 表的另一個字段,我正在尋找一種方法來做到這一點:
$admin = Admin::first();
$posts = $admin->posts();
我不想在 users 表中添加 admin 或其他內容,我仍然想使用 admins 表,因為稍后我將需要更多字段。
如果兩個表具有相同的 id,請使用特征來定義您的關系:
trait UserRelationships {
public function posts() {
return $this->hasMany(Post::class, 'user_id');
}
}
class Admin {
use UserRelationships;
}
class User {
use UserRelationships;
}
您只需要確保在關系中明確聲明外鍵名稱。
您還可以擴展 User 模型並覆蓋$table
屬性,但這可能會由於各種原因出現問題,因為User
屬性存在於用戶關系中而不是Admin
模型中。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.