簡體   English   中英

Laravel eloquent 擴展模型

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM