如何处理与OOPHP的多对多关系?

时间:2011-01-14 06:13:16

标签: php oop

什么是在面向对象的PHP中实现多对多关系的最佳方式。

如果我有三个表格,书籍和类别以及连接表bookscategories(处理多对多),我应该创建一个名为bookcategories的模型/类,并处理与那里的书籍类别关系的所有事情吗?

我参考下面的伪代码的具体问题是:

  1. 我是否已将方法正确分配给相应的类?
  2. 有没有更好的方法来实现这个并不复杂?
  3. 在哪个类中处理链接关系?例如$书本 - > link_to_cat( '5')
  4. 使用此方法的任何警告(如果适用)。
  5. 非常感谢任何建议!提前谢谢!

    伪代码:

    <?php
    
    class Books {
        //handles all book table stuff
    
        public function delete_book() {
            //deletes specific book
            //deletes all related bookcategories using find_by_book_id
        }
    }
    
    class Categories {
        // handles all category stuff
    }
    
    class BookCategories {
    
        public static function get_cats_by_book_id {
            // sql join statement to retrieve category objects by book id
        }
    
        public static function get_books_by_cat_id {
    
        }
    
        public static function find_by_book_id() {
            //returns bookcategories by book id.
        }
    }
    
    
    ?>
    

1 个答案:

答案 0 :(得分:1)

您可能会发现调查设计模式很有帮助。在这种情况下经常使用复合图案。 Matt Zandstra是一本帮助你使用php oo设计模式的好书 PHP Objects, Patterns and Practice