Mysql
 sql >> Teknologi Basis Data >  >> RDS >> Mysql

hubungan banyak-ke-banyak dalam doktrin

Ini tidak mungkin karena Anda tidak dapat melakukan join yang benar. Gabung dalam kasus ini akan bergantung pada nilai di parent_entity dan child_entity (mis. setiap baris mungkin perlu bergabung ke tabel yang berbeda). Selain itu, bagaimana doktrin mengetahui jenis rekaman mana yang harus dihidrasi (yaitu karena bergantung pada jenis entitas).

Anda mungkin dapat melakukan sesuatu seperti ini (walaupun akan aneh) dengan menggunakan klausa WITH pada gabungan Anda. Misalnya, dalam metode setUp() model berita Anda, Anda dapat melakukan:

$this->hasMany('Links as NewsVideoLinks', array('local' => 'id', 'foreign' => 'parent_id'));

Dan dalam penyiapan model Tautan Anda:

$this->hasMany('Videos as videos', array('local' => 'child_id', 'foreign' => 'id'));

Anda perlu menentukan semua kombinasi gabungan dalam model Tautan. Maksud saya adalah, Anda perlu memberi tahu bahwa ia memiliki banyak berita dan album juga menggunakan child_id dan parent_id.

Dan kemudian dalam kueri Anda, Anda perlu melakukan sesuatu seperti:

$query = Doctrine_Query::create();
$query->from('News n');
$query->innerJoin("n.NewsVideoLinks as links WITH parent_entity = 'news'");
$query->innerJoin("links.Videos as vids WITH child_entity = 'videos'");
$results = $query->execute();

Seperti yang Anda lihat, ini sangat merepotkan. Saya akan sangat merekomendasikan membuat tabel gabungan untuk setiap relasi. Anda masih akan mendapatkan apa yang Anda cari dengan bergabung ke setiap tabel bergabung.



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Apakah ada cara untuk menggunakan dplyr::bind_rows tanpa mengumpulkan bingkai data dari database?

  2. MySQL RAND() seberapa sering bisa digunakan? apakah itu menggunakan /dev/random?

  3. Pagination di Laravel 4 berfungsi untuk satu halaman. tapi tidak bekerja untuk yang lain

  4. Menyortir kueri MySQL dengan ORDER BY atau dengan fungsi sortir PHP

  5. #1221 - Penggunaan UPDATE dan ORDER BY yang salah