2017-04-05 4 views
1

この質問は次のようなものです:laravel uuid not showing in queryしかし、この質問の違いは、そのテーブルがidフィールドのピボットテーブルで、挿入時にMySQLトリガを介して生成されたUUIDが使用されていることです。ピボットテーブルのラエルベルの雄弁な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

私は 'protected $ casts = ['activeStatuses.pivot.id' => 'string'];'を試しましたが、動作しません。 – SaidbakR

+0

更新された答えを確認してください –

+0

ありがとう、カスタム文字列 '$ primaryKey'と' $ casts = ['customPrimaryField' => 'string'] 'が完璧に機能しました。 –