私はlaravel多相関係を使用しています。 2つの目的のために2つのmorphTo関係を定義しました。 私の質問はそれですが、Relation :: morphMap()関数の配列のキーを定義するときに、配列のキーが1つのケースで同じであるため、私が指定できる方法があるかどうかを知りたい特定のクラスの関係を定義する。関連クラス:: morphMap()を別のクラスに使用する方法
私の第1の関係....
Package.php
public function provider()
{
return $this->morphTo(null, 'map_type_id', 'map_id');
}
Venue.php
public function packages()
{
return $this->morphMany(VendorPackage::class, 'map', 'map_type_id', 'map_id');
}
Vendor.php
public function packages()
{
return $this->morphMany(VendorPackage::class, null, 'map_type_id', 'map_id');
}
map_type_idと比較するキーを設定したいので、サービスプロバイダのキーを設定しています。
Relation::morphMap([
config('evibe.roles.planner') => \Vendor::class,
config('evibe.roles.artist') => \Vendor::class,
config('evibe.roles.venue') => \Venue::class,
], false);
私の第二morphTo関係
チケットBooking.php
public function provider()
{
return $this->morphTo(null, 'map_type_id', 'map_id');
}
Venue.php
public function bookings()
{
return $this->morphMany(TicketBooking::class,null,'map_type_id','map_id');
}
Decors.php
public function bookings()
{
return $this->morphMany(TicketBooking::class,null,'map_type_id','map_id ');
}
ここでも、デフォルトのモデル名を使用していないため、サービスプロバイダでmorphToを定義する必要があります。
サービスプロバイダの私のmorphToはこのようになりました。
Relation::morphMap([
config('evibe.roles.planner') => \Vendor::class,
config('evibe.roles.artist') => \Vendor::class,
config('evibe.roles.venue') => \Venue::class,
config('evibe.ticket_type.venues') => \Venue::class,
config('evibe.ticket_type.decors') => \Decor::class
], false);
今私の問題は、キーコンフィグ(「evibe.roles.planner」)と設定( 'evibe.ticket_type.venues)はが同じ値3を持っているので、両方の事をしてアクセスされたときにということですそれでは配列が同じキーを持っているので、それはエラーを投げています。
私は、異なる関係のために異なるmorphMapを定義する他の方法があるかどうか尋ねたいと思います。