Mysql
 sql >> Cơ Sở Dữ Liệu >  >> RDS >> Mysql

mối quan hệ nhiều-nhiều trong học thuyết

Điều này là không thể bởi vì bạn không thể thực hiện một phép nối thích hợp. Tham gia trong trường hợp này sẽ phụ thuộc vào giá trị trong cấp độ gốc và cấp độ con (tức là mỗi hàng có thể cần phải tham gia vào một bảng khác nhau). Ngoài ra, làm thế nào học thuyết sẽ biết loại bản ghi nào cần hydrat hóa (ví dụ:vì nó phụ thuộc vào loại thực thể).

Bạn có thể rút ra một cái gì đó như thế này (mặc dù nó sẽ kỳ lạ) bằng cách sử dụng mệnh đề WITH trên các phép nối của bạn. Ví dụ:trong phương thức setUp () của mô hình tin tức, bạn có thể thực hiện:

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

Và trong quá trình thiết lập mô hình Liên kết của bạn:

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

Bạn sẽ cần xác định tất cả các kết hợp của phép nối trong mô hình Liên kết. Ý tôi là, bạn cần phải nói với nó rằng nó có nhiều tin tức và album cũng như sử dụng cả child_id và parent_id.

Và sau đó trong truy vấn của bạn, bạn sẽ cần thực hiện một số việc như:

$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();

Như bạn có thể thấy điều này rất cồng kềnh. Tôi thực sự khuyên bạn nên tạo các bảng tham gia cho mỗi mối quan hệ. Bạn vẫn sẽ nhận được những gì bạn đang tìm kiếm bằng cách tham gia vào từng bàn tham gia.



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Lọc theo định dạng MYSQL ngày giờ

  2. MySQL số ​​miễn phí đầu tiên giữa các giá trị tồn tại

  3. Bảng điều khiển dành cho quản trị viên Glassfish ném java.lang.IllegalStateException khi tạo JDBC Pool

  4. Tạo biến bảng trong MySQL

  5. Lỗi xây dựng chương trình với trình kết nối mysql