2017-04-05 126 views
1

這個問題是這樣的:laravel uuid not showing in query。但是,這個問題的區別在於該表是一個數據透視表,其中id字段使用通過MySQL觸發器插入生成的UUID。Laravel在數據透視表中的雄辯UUID

我不想爲該數據透視表創建另一個模型,以便爲類似問題的答案提供解決方案。那麼,是否有任何方法可以從與其相關的另一個模型中執行數據透視表的類型轉換?

回答

2

我認爲這可能是你想要什麼:

在模型中定義BelongsToMany關係添加該屬性:

protected $casts = ['relationName.pivot.id' => 'string']; 

更新

我想我們可以利用匿名課php7.0這裏,而不是創建一個模型類的關鍵:

我沒有測試此代碼,所以我不知道這是否會工作或沒有,這只是一個想法

public function activeStatuses() 
{ 
    return $this->belongsToMany('ModelName') 
       ->using(class_basename(new class extends \Illuminate\Database\Eloquent\Relations\Pivot { 
        protected $casts = ['id' => 'string']; 
       })); 
} 

一般來說,我寧願爲數據透視表創建模型或簡單地用一個pivot class

+0

我試過保護$ casts = ['activeStatuses.pivot.id'=>'string'];'但它不起作用。 – SaidbakR

+0

請檢查更新的答案,請 –

+0

謝謝帶有自定義字符串'$ primaryKey'和'$ casts = ['customPrimaryField'=>'string']'的擴展模型完美無瑕。 –