陷入 Zend_Db_Tables 困境
尝试使用 Zend_Db_Tables
任务是从 2 个或可能是 3 个表中检索数据并以 json 形式返回。
代码:
public function getWorkerAction()
{
$request = $this->getRequest();
$workers = new table_1();
if (!$worker) {
$res = array(
'success' => false,
'data' => 'empty',
);
}
else {
$card = $worker->findParentRow('Table2');
$res = array(
'success' => true,
'data' => array_merge($worker->toArray(), $card->toArray()),
);
}
$this->_helper->json($res);
}
问题是:
- 每个字段计数= 30(只需要3-10),
- 有些字段是BLOB/CLOB,
为每个地方的每个表生成选择,这对我来说似乎是床解决方案。在这种情况下,我该如何为 findParentRow
生成选择
trying to working with Zend_Db_Tables
task is to retrive data from 2 or may be 3 tables and return as json.
code:
public function getWorkerAction()
{
$request = $this->getRequest();
$workers = new table_1();
if (!$worker) {
$res = array(
'success' => false,
'data' => 'empty',
);
}
else {
$card = $worker->findParentRow('Table2');
$res = array(
'success' => true,
'data' => array_merge($worker->toArray(), $card->toArray()),
);
}
$this->_helper->json($res);
}
problem is:
- field count = 30 in each (need only 3-10)
- some fields is BLOB/CLOB
generate select for every table in every place seems bed solution for me. and in this case how shall i generate selects for findParentRow
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(1)
听起来您需要一种方法来指定要从父表中选择哪些字段,而不必编写整个
$select
。这将需要一个自定义行类。 ZF 提供了一种简单的方法来做到这一点。在您的依赖表类中,添加如下所示的rowClass
行:然后创建如下所示的自定义类,该类将重写
findParentRow
方法以允许您输入简单的字段数组名称:如果
Zend_Db_Table_Row_Abstract
没有指定第三个输入必须是Zend_Db_Table_Select
的实例,会更容易,因为这样我们可以自动检查该输入是否是列名数组而不是该类的实例。因此,我们添加自己的第四个输入,并将该逻辑放入方法中。现在您可以在控制器中执行类似的操作:Sounds like you're needing a way to specify which fields you want to select from the parent table without having to write a whole
$select
. That will require a custom row class. ZF provides an easy way to do this. In your dependent table classes, add arowClass
line like this:Then make your custom class like this, which overrides the
findParentRow
method to allow you to input a simple array of field names:It would be easier if
Zend_Db_Table_Row_Abstract
didn't specify that the 3rd input has to be an instance ofZend_Db_Table_Select
, because then we could automatically check whether that input is an array of column names instead of an instance to that class. So we add a 4th input of our own and put that logic inside the method. Now you can do something like this inside your controllers: