Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/230.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php zend框架连接3个表_Php_Mysql_Zend Framework_Select - Fatal编程技术网

Php zend框架连接3个表

Php zend框架连接3个表,php,mysql,zend-framework,select,Php,Mysql,Zend Framework,Select,我有3张表(订单、产品、订单项目)。在订单中我有日期。在订单项目中,我有产品id和订单id。我需要选择所有有订单的产品,即当月创建的产品。这是我的选择: $select = $this->select() ->setIntegrityCheck(false) ->from(array('o' => 'order')) ->join(array('oi' => 'order_item'), 'o.id = oi.order_id', ar

我有3张表(订单、产品、订单项目)。在
订单中
我有日期。在订单项目中,我有
产品id
订单id
。我需要选择所有有订单的产品,即当月创建的产品。这是我的选择:

$select = $this->select()
    ->setIntegrityCheck(false)
    ->from(array('o' => 'order'))
    ->join(array('oi' => 'order_item'), 'o.id = oi.order_id', array('quantity'))
        ->joinLeft(array('p' => 'product'), 'p.id = oi.product_id', array('id', 'pbv', 'name'))
        ->where('MONTH(o.date) = MONTH(CURDATE())');

但当我没有订单时,结果是空的。我应该一直拥有所有的产品。对不起我的英语。谢谢。

这很难。正确的SQL:

USE lyf;
SELECT
  *
FROM
  `order` AS o
  LEFT JOIN order_item AS oi ON oi.order_id = o.id
  RIGHT JOIN product AS p ON oi.product_id = p.id
WHERE
  IF(o.`date` IS NOT NULL, MONTH(o.`date`) = MONTH(NOW()), 1) = 1

您需要将joinLeft切换到joinRight,或者将product表放在查询的第一位