假设我有两个表,组和项。
项属于一个组,可以包含多个项目。
假设MVC模式和每个表都有他的模型类,用CRUD方法编写,用PHP编写,在项和组之间构建连接的最佳做法是什么
在群组中构建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();
...或直接在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();
我只是省略或简化了代码的某些部分,以帮助解释我的疑问。
那么推荐/最佳做法是什么?如果不是其中之一,还有其他什么?感谢。
答案 0 :(得分:-1)
如果我理解正确,在第一种情况下你必须执行两个查询,而在第二种情况下只有一次,所以我肯定会选择第二种。
在任何情况下,您始终可以使用EXPLAIN来估算"重"您的查询是在哪里以及您有优化/改进的空间。