Mysql
 sql >> Baza danych >  >> RDS >> Mysql

Wiele tabel z relacjami od jednego do wielu (Laravel)

Powinieneś używać polymorphic relacje do tego. Umożliwia wielu modelom korzystanie z jednego stołu.

Zajrzyj do dokumentacji tutaj

W Twoim konkretnym przypadku każda z Twoich tabel odwołuje się do noteable_id kolumna i noteable_type .

noteable_id będzie zawierać identyfikator (A/B/C) model.

noteable_type będzie zawierać nazwę ciągu modelu (A/B/C) .

(A/B/C) modele otrzymają teraz nowy atrybut:

/**
 * (A/B/C) Model(s)
 */
public function notes()
{
    return $this->morphMany('App\Notes', 'noteable');
}

Oraz note model zainicjuje swoje właściwości polimorficzne względem nazwy atrybutu używanej do identyfikacji polymorphic ids and types :

/**
 * Note Model
 */
public function noteable()
{
    return $this->morphTo();
}

Teraz możesz po prostu zadzwonić do ->noteable na (A/B/C) modele i wszystkie dzielą jeden stół bez potrzeby stosowania kolejnego stołu przestawnego dla każdego stołu.




  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Czy można ukryć hasło w logach MySQL General/Slow Query Logs?

  2. Usuwanie zduplikowanych rekordów SQL, aby umożliwić unikalny klucz

  3. Problemy UTF-8 ze znakami z bazy danych MySQL (np. é jako é)

  4. PHP (Codeigniter) Scalanie wyników zapytania przed pętlą foreach

  5. ld:nie znaleziono biblioteki dla -lzstd podczas instalacji pakietu dla mysql2 gem Ruby na macOS Big Sur 11.4