Я создал таблицы: addresses
, contacts
, events
и addressables
.
Здесь addressables (id, address_id, addressable_id, addressable_type)
имеет много-много полиморфных отношений для адреса с contacts
и events
.
Я определил следующие модели:
Адрес:
class Address extends Model
{
protected $fillable = [...];
public function addressable()
{
$this->morphTo();
}
}
Контакт:
class Contact extends Model
{
protected $fillable = [...];
public function addresses()
{
return $this->morphToMany(Address::class, 'addressable');
}
}
Событие:
class Event extends Model
{
protected $fillable = [...];
public function addresses()
{
return $this->morphToMany(Address::class, 'addressable');
}
}
Теперь я хотел получить все адреса по контакту или событию или любым другим определенным моделям.Можно ли получить адреса по определенному типу без определения следующих функций в модели Address
?Любая помощь очень ценится.
public function contacts()
{
return $this->morphedByMany('Contact', 'addressable');
}
public function events()
{
return $this->morphedByMany('Event', 'addressable');
}
Если возможно, как я могу достичь решения?
Ожидаемое:
$contactAddress = Address::getAddressable('App\Contact');
$eventAddress = Address::getAddressable('App\Event');