在PHP OO中构建JOINS的最佳实践

时间:2018-04-10 16:59:45

标签: php oop join model conventions

假设我有两个表,

属于一个,可以包含多个项目。

假设MVC模式和每个表都有他的模型类,用CRUD方法编写,用PHP编写,在组之间构建连接的最佳做法是什么

  1. 群组中构建SELECT语句以获取群组的ID,然后使用以下内容构建简单的SELECT语句得到了身份证?

    /* Select by name in database and returns group object with id and name */
    $group = new Group();
    $group->setName('somename');
    $group->selectByname(); 
    
    
    $item = new Group();
    /* Sets Group object inside Item */
    $item->setGroup($group);
    
    /* Select statement without join, only comparing id */
    /* SELECT FROM Item WHERE group_id = $group->id */
    $item->selectByGroup(); 
    
  2. ...或直接在Item类上构建JOIN?

    /* Sets the name, returning only the name in the Group object */
    $group = new Group();
    $group->setName('somename');
    
    /* Build the JOIN inside Item class */
    $item = new Item();
    $item->setGroup($group);
    
    /* Select statetment with join */
    /* SELECT it.*, gr.* FROM item it INNER JOIN group gr
       ON it.group_id = gr.id
       WHERE gr.name = $group->name 
    */
    $item->selectByGroupWithJoin(); 
    
  3. 我只是省略或简化了代码的某些部分,以帮助解释我的疑问。

    那么推荐/最佳做法是什么?如果不是其中之一,还有其他什么?感谢。

1 个答案:

答案 0 :(得分:-1)

如果我理解正确,在第一种情况下你必须执行两个查询,而在第二种情况下只有一次,所以我肯定会选择第二种。

在任何情况下,您始终可以使用EXPLAIN来估算"重"您的查询是在哪里以及您有优化/改进的空间。