簡體   English   中英

Laravel 具有多態關系的全局訪問

[英]Laravel global access with polymorphic relations

在我的應用程序中,幾乎每個表中都有兩列employable_id && employable_type ,用於存儲有關創建記錄的用戶的信息。

像這樣:

subscribers:                          products:
------------------------------------  ------------------------------------
id | employable_id | employable_type  id | employable_id | employable_type
------------------------------------  ------------------------------------
 1 |             1 | App\Company       1 |             1 | App\Company
 2 |             1 | App\Company       2 |             1 | App\Employee
 3 |             1 | App\Employee      3 |             3 | App\Employee
 4 |             1 | App\Employee      4 |             8 | App\Employee     and more...

訂戶.php

class Subscriber extends Model
{
    /**
     * Polymorphic relations
     */
    public function employable()
    {
        return $this->morphTo();
    }
}

我創建了一個accessor來組合多態關系的列,它工作正常。

class Subscriber extends Model
{
    /**
     * Polymorphic relations
     */
    public function employable()
    {
        return $this->morphTo();
    }

    /**
     * Accessor
     */
    public function getAddedByAttribute()
    {
        return $this->employable->name . ' [ ' . $this->employable->designation . ' ]';
    }
}
class Product extends Model
{
    /**
     * Polymorphic relations
     */
    public function employable()
    {
        return $this->morphTo();
    }

    /**
     * Accessor
     */
    public function getAddedByAttribute()
    {
        return $this->employable->name . ' [ ' . $this->employable->designation . ' ]';
    }
}

我試圖使getAddedByAttribute方法成為全局方法,而不是在每個 model class 中添加。

我怎樣才能做到這一點..?

你可以制作一個特征並在每個 model 需要這個 function 中使用它

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

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