假设我有一个作者和文章表。一篇文章可以有很多作者。所以这是一对多关系。我创建了一个文章类和一个作者类。

class author

{

private $id;

private $name;

public function __construct($array)

{

foreach($array...

}

// getters...

// setters...

}

class article

{

private $id;

private $title;

private $content;

private $author = array();

public function __construct($array)

{

foreach($array...

}

// getters...

// setters...

public function setAuthor(author $author)

{

$this->author[] = $author;

}

}

注意setAuthor,一个setter依赖注入。它需要一个作者对象来保持一对多的关系(一篇文章,许多作者)。

我从数据库中检索了一篇文章。

$sql = $db->prepare("SELECT article.id AS id_article, title, content,

GROUP_CONCAT(author.id SEPARATOR ';') AS id_author,

GROUP_CONCAT(name SEPARATOR ';') AS name FROM article ar

INNER JOIN author au ON ar.id=au.article_id

WHERE article.id=:id GROUP BY article.id");

$sql->bindValue(':id', $id, PDO::PARAM_INT);

sql->execute();

$fromDb = $sql->fetch();

现在我必须构建对象,对吗?

$article['id'] = $fromDb['id_article'];

$article['title'] = $fromDb['title'];

$article['content'] = $fromDb['content'];

$id_author = explode(';', $fromDb['id_author']);

$name = explode(';', $fromDb['name']);

$newArticle = new article($article);

foreach($id_author as $key => $value)

{

$author['id'] = $value;

$author['name'] = $name[$key];

$newArticle->setAuthor(new author($author));

}

我发现最后一部分很重,不实用。我不确定这是正确的做法。许多关系都会出现同样的问题。

在这种特殊情况下,一旦从db获取数据,如何使用对象?

php怎么处理一对多,php - 如何处理内部连接以及与OOP的一对多关系? - SO中文参考 - www.soinside.com...相关推荐

  1. 作为项目经理,如何处理好与不同类型客户之间的关系?

    作为项目经理,如何处理好与客户之间的关系非常重要.但是究竟如何处理客户关系呢?客户的人员都有哪些类型?不同类型的客户的应对是否都一样呢?下面我们来看看在日常工作中经常遇到的客户类型,应该如何处理跟他的 ...

  2. php一对多聊天程序代码,微信小程序实现一对多发消息

    微信小程序中实现一对多发消息详解及实例代码 微信小程序中各个界面之间的传值和通知比较蛋疼.所以模仿了iOS中的通知中心,在微信小程序中写了一套类似的通知中心. 通知中心可以做到:1对多发消息,传递ob ...

  3. mysql一对多增删改查_SpringBoot+MySql+ElementUI实现一对多的数据库的设计以及增删改查的实现...

    场景 业务中经常会用到一对多的数据库的设计与数据的增删改查的实现. 比如要实现一个对手机应用配置允许访问的权限的业务. app与权限就是一对多的关系.即一个app可以拥有多个权限. 注: 实现 首先设 ...

  4. 古典问题:有一对兔子,从出生后第三个月起每个月都生一对兔子,小兔子长到第三个月又生一对兔子,假如兔子都不死,问3年后的兔子总数是多少?

    问题剖析: 1 1 2 3 5 8 13 21 34 55 89 144(1-12个月兔子的对数)当第三个开始,数值为前两项之和(斐波那契数列) public class ZuoYe2 {public ...

  5. mysql一对多如何设计_数据库在一对一、一对多、多对多怎么设计表关系

    1.一对一可以两个实体设计在一个数据库中l例如设计一个夫妻表,里面放丈夫和妻子 2.一对多可以建两张表,将一这一方的主键作为多那一方的外键,例如一个学生表可以加一个字段指向班级(班级与学生一对多的关系 ...

  6. mysql一对多增删改查_SQLAlchemy 增删改查 一对多 多对多

    #高级版查询操作,厉害了哦#老规矩 from my_create_table importUser,enginefrom sqlalchemy.orm importsessionmaker Sessi ...

  7. C语言-假设有一对兔子,出生第二个月变成了一对大兔子,第三个月后变成一对老兔子, 并开始每月出生一对小兔子,依次类推。求15个月内共有多少对兔子?

    提示公式:F(1) = 1; F(2) = 1; F(n) = F(n - 1) + F(n - 2); n > 2 注意这里:第三个月就开始何时 #include <stdio.h> ...

  8. 故事得从西元1202年说起,话说有一位意大利青年,名叫斐波那契。 在他的一部著作中提出了一个有趣的问题:假设一对刚出生的小兔一个月后就能长成大兔, 再过一个月就能生下一对小兔,并且此后每个月都生一对小

    public static void main(String[] args) {System.out.println(getCount(30));}//输入一个月份,返回这个月对应的兔子的对数publ ...

  9. 宫崎骏动画里的15对情侣,你最喜欢哪一对?

    宫崎骏动画里的15对情侣,你最喜欢哪一对? <心之谷>月岛雫 天泽圣司 <地海战记>亚刃 瑟鲁 <风之谷>娜乌西卡 阿斯贝鲁 <霍尔的移动城堡>苏菲 霍 ...

  10. Hibernate一对多单向关联和双向关联映射方法及其优缺点

    一对多关联映射和多对一关联映射实现的基本原理都是一样的,既是在多的一端加入一个外键指向一的一端外键,而主要的区别就是维护端不同. 它们的区别在于维护的关系不同: 一对多关联映射是指在加载一的一端数据的 ...

最新文章

  1. 2021年大数据Spark(四十八):Structured Streaming 输出终端/位置
  2. docker容器相关
  3. C++ exit 与 return 浅析
  4. 顺丰gis产品经理_线上面试季丰图科技—顺丰旗下专注GIS领域
  5. [JavaWeb-JDBC]JDBC概念
  6. 【BZOJ3328】PYXFIB【矩阵快速幂】【单位根反演】【二项式定理】
  7. 【HDU - 5418】Victor and World(tsp旅行商问题,状压dp,floyd最短路,图论)
  8. Hibernate所用15个jar包
  9. CV方向介绍 | 基于自然语言的跨模态行人ReID的SOTA方法简述(下)
  10. svo: semi-direct visual odometry 论文解析
  11. python的列表操作_在Python中列表的操作
  12. CentOS虚拟机挂载U盘
  13. JavaWeb框架三剑客前言
  14. 程序员的情人节「GitHub 热点速览 v.22.07」
  15. 汽车CAN 总线系统原理设计与应用 (一)
  16. vue 调用 js 获取的今天日期、本周、本月、本年起始和结束日期
  17. 90后首次购房心路历程
  18. 小米mix2android o升级,小米MIX2升级Android 8.0 全面屏手势操作将一同推送
  19. JAVA设计模式-06-建造者模式
  20. 5G+AI+大数据+IoT如何改变一切?

热门文章

  1. 云计算引入可能破坏之前建立的IT秩序
  2. Macaca自动化测试Android和IOS应用
  3. 面向对象软件设计原则
  4. iOS开发篇——C++函数模板介绍
  5. Java RMI之介绍
  6. excel共享工作薄
  7. 14.mac apche
  8. 20.Yii 工作流
  9. 《数学之美》一 文字、数字及语言的历史
  10. 地区picker 各选择器,优劣分析