- iOS/Objective-C 元类和类别
- objective-c - -1001 错误,当 NSURLSession 通过 httpproxy 和/etc/hosts
- java - 使用网络类获取 url 地址
- ios - 推送通知中不播放声音
我最近开始使用 Zend Framework (1.8.4),以提供用于查看购物车网站订单的管理工具。
我想做的是从单个数据库结果行高效地创建多个模型(Zend_Db_Table_Row_Abstract
)对象。
关系很简单: 一个订单有一个客户(外键 order_custid=customer.cust_id
); 一个客户有很多订单。
加载订单非常简单。使用此处记录的方法:
Modeling objects with multiple table relationships in Zend Framework
...然后我可以为每个人吸引客户。
foreach ($orderList as $o)
{
cust = $o->findParentRow('Customers');
print_r ($cust); // works as expected.
}
但是,当您加载一长串订单时(例如,40 个或更多,一页),速度慢得令人痛苦。
接下来我尝试了一个 JOIN:
$custTable = new Customers();
$orderTable = new Orders();
$orderQuery = $orderTable->select()
->setIntegrityCheck(false) // allows joins
->from($orderTable)
->join('customers', 'cust_id=order_custid')
->where("order_status=?", 1); //incoming orders only.
$orders = $orderTable->fetchAll($orderQuery);
这给了我一个订单对象数组。 print_r($orders)
显示它们中的每一个都包含我期望的列列表,在 protected 成员中,原始字段名称为 order_* 和 cust_*。
但是如何根据我在每个 Order 对象中找到的 cust_* 字段创建 Customer 对象呢?
foreach ($orders as $o) {
$cols = $o->toArray();
print_r ($cols); // looks good, has cust_* fields...
$cust = new Customer(array( 'table' => 'Customer', 'data' => $cols ) );
// fails - $cust->id, $cust->firstname, etc are empty
$cust->setFromArray($cols);
// complains about unknown 'order_' fields.
}
有没有什么好的方法可以从连接的行中同时创建一个 Order 和一个 Customer 对象?还是我必须在没有表网关的情况下运行查询,获取原始结果集,然后将每个字段一个一个地复制到新创建的对象中?
最佳答案
Zend_Db
不提供执行此操作的便捷方法。
假设,对从多个表派生的行使用 Facade 模式会很不错。外观类将跟踪哪些列属于每个相应的表。当您使用 setFromArray()
方法设置单个字段或一大堆字段时,外观将知道如何将字段映射到每个表的 Row 对象,并应用 UPDATE
语句到受影响的表。
或者,您可以通过子类化 Zend_Db_Table_Row_Abstract
来解决未知字段的问题,更改 __set()
行为以默默地忽略未知列而不是抛出异常。
您不能让 OO 接口(interface)来做 SQL 能做的所有事情。一定有一些底线,您可以在其中确定一组合理的常见情况已被涵盖,任何更复杂的事情都应该使用 SQL 完成。
关于php - Zend : Two Objects, 一行,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1262084/
Sorry, the original image cannot be uploaded due to some security reasons. The following is a sch
如何使用 thymeleaf th:each 同时迭代两个列表。 room name 这是有效的,但我想做这样的事情
我有两个表存储成员数据 成员:id、field1、field2 和 field3... members_extra:memberId、someExtraField1 和 someExtraField2
我在 R 中有一个数据框,如下所示: Word Base Number Type - - - - shoe shoe 4834 si
我在 R 中有一个数据框,如下所示: Word Base Number Type - - - - shoe shoe 4834 si
我的场景是一个用户表和一个图片表。每个用户可以上传多张图片。每个用户都可以将自己的一张图片设置为自己最喜欢的图片,但这并不影响该图片位于该用户的图片集中。 事实证明,将其映射到 hibernate 是
最近,我一直在探索Python中的异或密码。我有两种“工作”方法: def XORcipher(plaintext, key): output = "" for character i
我对我用 C 编写的程序有疑问。我将在两列中并排写两个不同的字符串。我没有找到我的问题的明确答案,因为他们几乎总是给出长度或数量已知的数字示例。 我有两个字符串,最大长度为 1500 个字符,但对我来
我在 iPhone 应用程序中使用 CGContext 时遇到一些问题。我试图用不同的颜色绘制几条线,但所有线最终总是具有最后使用的颜色。我尝试了几种方法,但并不幸运。 我建立了一个小型示例项目来处理
我最近刚刚拿起 KO,想做类似以下的事情。 有两个输入,它们会互相改变。 HTML: 脚本: function DataViewModel() { var self = this;
我有一个 Excel Power Query,它可以从本质上是一个时间表 Web 应用程序导入并转换 CSV 数据传输文件,以便再次通过 CSV 导入到我们的薪资应用程序中。某些行在两个单独的字段中同
这个问题已经有答案了: Calculating the difference between two Java date instances (46 个回答) 已关闭 6 年前。 我想检查我的用户登录
这是一个新手问题。我有两个 javascript 和一个 html 文件。当我点击一个图像时,它会转到第一个 .js 文件,当它最终运行所有代码时,它应该转到第二个 .js 文件。但是如何连接不同文件
我有两个模型:Saft(杂志)和 Keyword。每个“Saft”都由一系列关键字定义,但也有一个标题,该标题始终是其关键字之一。 Saft 和关键字模型通过 HABTM 连接表连接,以便提取所有关键
我有以下模型: class AcademicRecord(models.Model): record_id = models.PositiveIntegerField(unique=True,
我想画一条穿过圆但被圆边界剪切的线。这是到目前为止我的代码, var elem = document.getElementById('draw-shapes'); var params = { wid
我正在研究 NodeJs,我的问题是: 进程A在计算机A上运行,进程B在计算机B上运行,现在我想向它们广播一条消息,我该如何实现? 最佳答案 您应该查看消息队列。 Redis具有发布/订阅功能,是常见
我想两两比较表中的行,只保留相似的匹配项。 import pandas as pd df = pd.DataFrame.from_items([('a', [0,1,1,0]), ('b', [0,0
正如标题所解释的,假设我有两个 ActiveRecord::Base 模型:SatStudentAnswer 和 ActStudentAnswer。 我有一个学生模型 has_many :act_st
假设我有两个列表:a=[1,2,3]b=[4,5,6]我想将它们写入一个文本文件,以便获得一个两列文本文件: 1 4 2 5 3 6 最佳答案 只需 zip 列表,并将它们写入 csv 文件,并以制表
我是一名优秀的程序员,十分优秀!