代码之家  ›  专栏  ›  技术社区  ›  Koobz

Zend DB选择?join*条件中的替换

  •  6
  • Koobz  · 技术社区  · 15 年前

    看起来没有任何参数替换 Zend_Db_Select 在条款中。

    很烦人的是,我不能做这样的事情:

    $select->joinLeft('st_line_item','st_line_item.order_id = st_order.id and st_line_item.status = ?')
    

    那么,在fluent接口中工作的惯用替代方法是什么呢?我可以在外面准备join子句,但这不是重点。

    2 回复  |  直到 15 年前
        1
  •  10
  •   Noah Goodrich    15 年前

    这应该有效:

    $select->joinLeft(
        'st_line_item',
        $this->_db->quoteInto(
            'st_line_item.order_id = st_order.id and st_line_item.status = ?', 
            $param
        )
    )
    

    基本上,只要你想转义一个Zend_DB戥u*方法不能自动执行的变量,你只要使用Zend戥u DB::quoteInto()来执行这个任务。

        2
  •  1
  •   Mike B    15 年前

    我一直都是这样做的,这不是一件艺术品,但它完成了工作:

    $param = $db->quote($param);
    $select->joinLeft(
        'st_line_item',
        'st_line_item.order_id = st_order.id and st_line_item.status = ' . $param
    );