所以我正在为房地产经纪人做一个项目.我的设计中有以下对象/ MySQL表:
Complexes
Units
Amenities
Pictures
Links
Documents
Events
Agents
Run Code Online (Sandbox Code Playgroud)
这些是上述对象之间的关系.
Complexes have a single Agent.
Complexes have multiple Units, Amenities, Pictures, Links, Documents, and Events.
Units have multiple Pictures, Links, and Documents.
Run Code Online (Sandbox Code Playgroud)
设施,图片,链接,文档和事件都在数据库中具有必要的外键,以指定它们属于哪个单元/复合体.
我需要将必要的对象从数据库加载到PHP中,以便我可以在我的项目中使用它们.
如果我尝试在1个查询中从表中选择所有数据,使用LEFT JOINS,我将获得每个唯一单元的至少(链接数)*(图片数)*(文档数)行.添加设施和事件,我会得到所有*设施*每个复杂的事件#...不确定我想尝试将其加载到PHP中的对象.
另一种可能性是每个复杂/单元,为链接,图片,文档,事件和便利设施执行1个单独的SQL语句
我的问题如下:
如果我正确索引我的所有表,那么为每个复杂/单元执行3-5个额外查询真的是一个坏主意吗?
如果没有,我怎样才能获得加载到PHP对象中所需的数据.理想情况下,我会为单位设置如下对象:
Unit Object
(
[id]
[mls_number]
[type]
[retail_price]
[investor_price]
[quantity]
[beds]
[baths]
[square_feet]
[description]
[featured]
[year_built]
[has_garage]
[stories]
[other_features]
[investor_notes]
[tour_link]
[complex] => Complex Object
(
[id]
[name]
[description]
etc.
)
[agent] => Agent Object
(
[id]
[first_name]
[last_name]
[email] …Run Code Online (Sandbox Code Playgroud) 所以我试图采用PHP的良好的面向对象编程技术.大多数(全部读完)我的项目都涉及MySQL数据库.我的直接问题涉及我需要开发的用户模型.
我目前的项目有代理商和潜在客户.代理商和潜在客户都是具有大量相同信息的用户.所以,显然,我想要一个类Agents和一个类Leads来扩展一个公共类Users.现在,我的问题如下:
如何最好地处理SQL来加载这些对象?我实例化代理或潜在客户时,我不想执行多个SQL语句.但是,逻辑告诉我,当用户构造函数被触发时,它应该执行一个SQL语句来加载代理和潜在客户之间的公共信息(用户名,密码,电子邮件,联系信息等).Logic还告诉我,当激活Agents或Leads构造函数时,我想执行SQL来加载Agents或Leads类的唯一数据....但是,逻辑也告诉我执行2是个坏主意每次我需要代理或潜在客户时的SQL语句(因为每个可能有数千个).
我已经尝试过搜索一般如何处理但没有成功的例子......也许我只是在寻找错误的东西?
我正在努力为Phabricator工作一个良好的工作流程,最近对我们的测试项目进行了一些更改以解决一些问题.我做了几处修改但忘了将它们放在自己的功能分支中.所有这些更改都未提交给git.我继续创建了一个已创建的功能分支,以适用于我所做的更改并提交它们.我以为我可以切换到每个分支并arc diff为它们创建代码评论(我仍然认为我可以这样做).但是,当我arc diff在当前签出的分支上执行时,该命令永远不会完成.为了看看发生了什么,我跑了arc diff --trace.输出如下.正如你可以推测的那样,它通过提交消息规范(在我的情况下通过Notepad ++)然后完全死[26] git diff在线上(并且"死"我的意思是它挂起并且永远不会完成).
libphutil loaded from 'S:\web\_arcanist\libphutil\src'.
arcanist loaded from 'S:\web\_arcanist\arcanist\src'.
Working Copy: Reading .arcconfig from "S:\web\_apollo\andreas\bonfire3/.arcconfi
g".
Working Copy: Path "S:\web\_apollo\andreas\bonfire3" is part of `git` working co
py "S:\web\_apollo\andreas\bonfire3".
Working Copy: Project root is at "S:\web\_apollo\andreas\bonfire3".
>>> [0] <conduit> conduit.connect() <bytes = 445>
>>> [1] <http> http://phabricator.mydomain.com/api/conduit.connect
<<< [1] <http> 1,086,426 us
<<< [0] <conduit> 1,089,191 us
>>> [2] <exec> $ git diff --no-ext-diff --no-textconv --raw …Run Code Online (Sandbox Code Playgroud)