我正在学习如何把我的头围绕着sql和PHP.我有4个表结构如下
+-----------+    +------------+    +---------+    +----------+
|  Project  |    | Slide      |    | Shape   |    |  Points  |
+-----------+    +------------+    +---------+    +----------+
|    id     |    |  id        |    | id      |    | id       |
+-----------+    | project_id |    | cont_id |    | shape_id |
                 +------------+    +---------+    | x        |
                                                  | y        |
                                                  +----------+

正如你所看到的那样,表格通过id一直链接到点,这意味着一个项目将包含一些幻灯片,其中包含许多包含多个点的形状.

我有一个SQL查询

SELECT slide.`id`,shape.`id`,points.`x_point`,points.`y_point` 
FROM `project`,`slide`,`shape`,`points` 
WHERE 1 = slide.`project_id` 
   AND slide.`id` = shape.`slide_id` 
   AND shape.`id` = points.`shape_id`

我想要的是将这个查询的结果看起来像这样

[0] => stdClass Object
     (
         [id] => 27
         [x] => 177
         [y] => 177
     )

 [1] => stdClass Object
     (
         [id] => 27
         [x] => 178
         [y] => 423
     )

 [2] => stdClass Object
     (
         [id] => 27
         [x] => 178
         [y] => 419
     )

 [3] => stdClass Object
     (
         [id] => 27
         [x] => 178
         [y] => 413
     )

 [4] => stdClass Object
     (
         [id] => 27
         [x] => 181
         [y] => 399
     )

 [5] => stdClass Object
     (
         [id] => 27
         [x] => 195
         [y] => 387
     )

 [6] => stdClass Object
     (
         [id] => 27
         [x] => 210
         [y] => 381
     )

 [7] => stdClass Object
     (
         [id] => 27
         [x] => 231
         [y] => 372
     )

 [8] => stdClass Object
     (
         [id] => 27
         [x] => 255
         [y] => 368
     )

 [9] => stdClass Object
     (
         [id] => 27
         [x] => 283
         [y] => 368
     )
... AND CONTINUED FOR A LONG TIME

我想要的是将这个荒谬的数组转换成更类似的东西

[9] => stdClass Object
         (
             [id] => ID OF LIKE SHAPES
             [x] => Array(ALL THE X POINTS)
             [y] => ARRAY(ALL THE Y Points)
         )

我不能为我的生活找出如何将它转换成这样一个数组.

如果无法完成查询,我设计的是一个更好的查询.也许一个抓住点,然后把它放在一个数组中的点…我想我只是有一个想法…

新信息,

所以我添加了一个答案这个问题,我不知道这是否是标准的方式.为了帮助其他答案,如果我的不是一个很好的解决方案,我也会添加我的思想过程在这里.

查看我的答案,了解更多信息.

还有一个ORM与我的算法比较如何?

使用像 Doctrine这样的ORM,你可以简单地对它进行建模
/**
 * @Entity
 */
class Project
{
    /**
     * @Id @GeneratedValue
     * @Column(type="integer")
     */
    private $id;

    /**
     * @OnetoMany(targetEntity="Slide",mappedBy="project")
     */
    private $slides;

    public function __construct()
    {
        $this->slides = new \Doctrine\Common\Collections\ArrayCollection;
    }
}

/**
 * @Entity
 */
class Slide
{
    /**
     * @Id @GeneratedValue
     * @Column(type="integer")
     */
    private $id;

    /**
     * @ManyToOne(targetEntity="Project",inversedBy="slides")
     * @JoinColumn(name="project_id",referencedColumnName="id")
     */
    private $project;

    /**
     * @OnetoMany(targetEntity="Shape",mappedBy="slide")
     */
    private $shapes;
}

等等…

见http://www.doctrine-project.org/docs/orm/2.0/en/reference/association-mapping.html#one-to-many-bidirectional

当然,有相当多的设置和处理开销涉及到,但是您会欣赏ORM,因为您的域模型变得更加复杂.

php – 将执行以下操作的Select语句的更多相关文章

  1. 单线程保存上的iOS7 NSMergeConflict

    在重新排序两行之后,在单线程应用程序上存在简单数据保存问题.我已经设法简化了编码以重现错误,并希望与其他人一起尝试这一点的第二意见.这是一个完整性检查,因为我怀疑iOS7引入的核心数据问题,因为这在iOS6中运行正常.首先,启动一个新的核心数据项目并创建这个模型……现在再次按下第二个测试按钮并弹出.您应该得到类似于此的NSMergeConflict错误…

  2. Java Valhalla Project项目介绍

    这篇文章主要介绍了Java Valhalla Project项目介绍,文章围绕主题展开详细的内容介绍,具有一定的参考价值,需要的小伙伴可以参考一下

  3. vue创建项目卡住不动,vue create project卡住不动的解决

    这篇文章主要介绍了vue创建项目卡住不动,vue create project卡住不动的解决方案,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教

  4. 详解iOS Project和Targets配置

    本篇文章给大家分享了一篇关于在IOS中配置Project和Targets的相关文章,有这方面需要的朋友参考下吧。

  5. eclipse里没有“Dynamic Web Project“这个选项的问题解决

    本文主要介绍了eclipse里没有“Dynamic Web Project“这个选项的问题解决,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧

  6. Project Reactor源码解析publishOn使用示例

    这篇文章主要为大家介绍了Project Reactor源码解析publishOn使用示例,有需要的朋友可以借鉴参考下,希望能够有所帮助,祝大家多多进步,早日升职加薪

  7. php – Propel PostgreSQL迁移无法找到适配器

    我正在尝试在我的开发Propel项目中首次使用迁移(所以我不必重新插入15MB的数据),但是有一些困难.我在我的模式中进行了更改,并运行propel-gendiff.我第一次收到一个错误,找不到我的buildtime-conf.xml文件.我还没有(因为没有必要),但是读取结构应该与runtime-conf.xml相同.我将runtime-conf.xml复制到buildtime-conf.xml

  8. php – 将执行以下操作的Select语句

    新信息,所以我添加了一个答案这个问题,我不知道这是否是标准的方式.为了帮助其他答案,如果我的不是一个很好的解决方案,我也会添加我的思想过程在这里.查看我的答案,了解更多信息.还有一个ORM与我的算法比较如何?使用像Doctrine这样的ORM,你可以简单地对它进行建模等等…

  9. 如何重新渲染使用

    我已经实现了一个由转发器创建的列表:和一个过滤我的列表的按钮:那么在点击命令链接后,是否有一个简单的方法来渲染我的中继器:-)我试过如下:但那没办法更新也不行…也许是不可能重新安装中继器?还有另外一个元素,如div标签,还是可以重载的东西?…感谢您的帮助本身不会向输出生成任何HTML.期望出现在HTMLDOM树中的ID.把它放在用id和引用它.

  10. angular – 属性’firebase’不存在于类型{production:boolean; }

    所以我试图在Firebase和Heroku上构建和部署我的Angular4应用程序,但是我遇到了如下错误:ERRORin/Users/…

随机推荐

  1. PHP个人网站架设连环讲(一)

    先下一个OmnihttpdProffesinalV2.06,装上就有PHP4beta3可以用了。PHP4给我们带来一个简单的方法,就是使用SESSION(会话)级变量。但是如果不是PHP4又该怎么办?我们可以假设某人在15分钟以内对你的网页的请求都不属于一个新的人次,这样你可以做个计数的过程存在INC里,在每一个页面引用,访客第一次进入时将访问时间送到cookie里。以后每个页面被访问时都检查cookie上次访问时间值。

  2. PHP函数学习之PHP函数点评

    PHP函数使用说明,应用举例,精简点评,希望对您学习php有所帮助

  3. ecshop2.7.3 在php5.4下的各种错误问题处理

    将方法内的函数,分拆为2个部分。这个和gd库没有一点关系,是ecshop程序的问题。会出现这种问题,不外乎就是当前会员的session或者程序对cookie的处理存在漏洞。进过本地测试,includes\modules\integrates\ecshop.php这个整合自身会员的类中没有重写integrate.php中的check_cookie()方法导致,验证cookie时返回的username为空,丢失了登录状态,在ecshop.php中重写了此方法就可以了。把他加到ecshop.php的最后面去就可

  4. NT IIS下用ODBC连接数据库

    $connection=intodbc_connect建立数据库连接,$query_string="查询记录的条件"如:$query_string="select*fromtable"用$cur=intodbc_exec检索数据库,将记录集放入$cur变量中。再用while{$var1=odbc_result;$var2=odbc_result;...}读取odbc_exec()返回的数据集$cur。最后是odbc_close关闭数据库的连接。odbc_result()函数是取当前记录的指定字段值。

  5. PHP使用JpGraph绘制折线图操作示例【附源码下载】

    这篇文章主要介绍了PHP使用JpGraph绘制折线图操作,结合实例形式分析了php使用JpGraph的相关操作技巧与注意事项,并附带源码供读者下载参考,需要的朋友可以参考下

  6. zen_cart实现支付前生成订单的方法

    这篇文章主要介绍了zen_cart实现支付前生成订单的方法,结合实例形式详细分析了zen_cart支付前生成订单的具体步骤与相关实现技巧,需要的朋友可以参考下

  7. Thinkphp5框架实现获取数据库数据到视图的方法

    这篇文章主要介绍了Thinkphp5框架实现获取数据库数据到视图的方法,涉及thinkPHP5数据库配置、读取、模型操作及视图调用相关操作技巧,需要的朋友可以参考下

  8. PHP+jquery+CSS制作头像登录窗(仿QQ登陆)

    本篇文章介绍了PHP结合jQ和CSS制作头像登录窗(仿QQ登陆),实现了类似QQ的登陆界面,很有参考价值,有需要的朋友可以了解一下。

  9. 基于win2003虚拟机中apache服务器的访问

    下面小编就为大家带来一篇基于win2003虚拟机中apache服务器的访问。小编觉得挺不错的,现在就分享给大家,也给大家做个参考。一起跟随小编过来看看吧

  10. Yii2中组件的注册与创建方法

    这篇文章主要介绍了Yii2之组件的注册与创建的实现方法,非常不错,具有参考借鉴价值,需要的朋友可以参考下

返回
顶部