Mysql
 sql >> Base de Dados >  >> RDS >> Mysql

Várias tabelas com relacionamento um para muitos (Laravel)


Você deve estar usando polymorphic relacionamentos para isso. Ele permite que vários modelos façam uso de uma única tabela.

Dê uma olhada na documentação aqui

No seu caso específico, cada uma de suas tabelas faria referência a um noteable_id coluna e um noteable_type .

O noteable_id conterá o id do (A/B/C) modelo.

O noteable_type conterá o nome da string do modelo (A/B/C) .

O (A/B/C) os modelos agora receberão um novo atributo:
/**
 * (A/B/C) Model(s)
 */
public function notes()
{
    return $this->morphMany('App\Notes', 'noteable');
}

E a note model iniciará suas propriedades polimórficas em relação ao nome do atributo usado para identificar seus polymorphic ids and types :
/**
 * Note Model
 */
public function noteable()
{
    return $this->morphTo();
}

Agora você pode simplesmente chamar ->noteable no (A/B/C) modelos, e todos compartilham 1 tabela sem a necessidade de outra tabela dinâmica para cada tabela.