Php Zend Framework 2:如何从联接表中获取列?
我正在使用Zend Framework 2.4和Php Zend Framework 2:如何从联接表中获取列?,php,mysql,join,zend-framework2,Php,Mysql,Join,Zend Framework2,我正在使用Zend Framework 2.4和TableGateway,需要执行以下查询: SELECT products.title, student.firstname, orders.order_id, orders.profile_id, orders.status FROM student INNER JOIN (products INNER JOIN orders ON products.product_id = orders.product_id)
TableGateway
,需要执行以下查询:
SELECT products.title, student.firstname, orders.order_id,
orders.profile_id, orders.status
FROM student
INNER JOIN
(products
INNER JOIN orders ON products.product_id = orders.product_id)
ON student.student_id = orders.student_id
WHERE (((orders.profile_id)='.$id.'));
以下是我正在使用的:
$select = $this->tableGateway->getSql()->select();
$select->columns(array('*'))
->join('products', 'products.product_id = orders.product_id', array('title'))
->join('student', 'student.student_id = orders.student_id', array('first_name'))
->where(array('orders.profile_id' => $id));
$items = $this->tableGateway->selectWith($select);
return $items;
问题是,$items
不包含列title
或first\u name
。它只包含orders表中的列。
我需要做什么才能获取
$items
以包含来自联接表的列?尝试使用关联数组
$select = $this->tableGateway->getSql()->select();
$select->columns(array('*'))
->join('products', 'products.product_id = orders.product_id', array('title' => 'product_title'))
->join('student', 'student.student_id = orders.student_id', array('first_name' => 'student_first_name'))
->where(array('orders.profile_id' => $id));
$items = $this->tableGateway->selectWith($select);
return $items;
有趣的是,看看这篇文章:这个人有完全相反的问题,所以本质上你的解决方案(不要添加列(数组)))我在没有列(数组('*'))的情况下尝试过。没有更改,title和first_name仍然不是$items的成员。
$this->tableGateway->getSql()->select()代码>:您的基本查询是什么?您可能需要在查询中从('orders',array with columns)
开始执行->才能获得所需的行为。tableGateway位于orders表上。我尝试了->从('orders',数组(blablabla))。它导致了以下错误-“由于此对象是使用构造函数中的表和/或架构创建的,因此它是只读的。”您必须从头开始查询。。。。