gpt4 book ai didi

zend-framework2 - zf2 从连接表中选择列 - 如何?

转载 作者:行者123 更新时间:2023-12-04 10:53:07 25 4
gpt4 key购买 nike

我觉得我必须错过一些非常简单的东西。这是一个非常简单的任务,我想做的就是得到类似的东西:

SELECT * FROM lookup_items
JOIN lookup ON lookup_items.lookup_id = lookup.id

这将在常规 SQL 中返回所有连接表的所有列。这是我在 zf2 中的尝试:

$select = new Select();

$select->from('lookup_items');
$select->join('lookup', 'lookup_items.lookup_id = lookup.id');

结果集仅包括“lookup_items”中的列。我尝试了各种方法来获取“查找”列,包括:

$select->columns(array('lookup_items.*', 'lookup.*'));

但他们都只是爆炸。当然有一种方法可以做到这一点,它太简单了,我完全想念它。

我认为一个简单的例子可以避免混淆,但这里有更多代码:

class LookupItemsTable extends AbstractTableGateway
{
public function getList($resource)
{
$system_name = str_replace('*', '%', strtoupper($resource));

$joinTable = 'lookup';

$select = new Select();

$select->from($this->table);
$select->join($joinTable, "{$this->table}.lookup_id = {$joinTable}.id");

$where = array();
$where[] = "{$this->table}.enabled is true";
$where[] = "{$joinTable}.enabled is true";
$where[] = "UPPER({$joinTable}.system_name) ilike '{$system_name}'";

$select->where($where);

$sort[] = 'sort_order ASC';
$sort[] = 'value ASC';
$select->order($sort);

$rowset = $this->selectWith($select);

return $rowset;
}
}

在哪里:

$resource = $this->params()->fromRoute('resource', 'BUSINESS');

而 $this->table 是 'lookup_items'。我真正想做的就是从两个连接的表中获取列。我想有一种 zf2 方法可以在没有所有 OO 错误的情况下直接生成 SQL 语句,所以我可以强制这样做。但我宁愿尽可能在框架内工作。

最佳答案

只需改变这一行

$select->join('lookup', 'lookup_items.lookup_id = lookup.id');


$select->join('lookup', 'lookup_items.lookup_id = lookup.id', array('lookupcol1', 'lookupcol2');

关于zend-framework2 - zf2 从连接表中选择列 - 如何?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16698655/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com