【问题标题】:Zend select DB with no get columnZend 选择数据库,没有获取列
【发布时间】:2012-06-12 09:43:08
【问题描述】:

当我从 DB 中选择数据时,zend 出现问题。在我的查询中,我不想从与另一个表连接的表中选择任何列。我在第三个参数中使用 array() 。但是当我这样做时:

$sql = $db->select();
    $sql->from( "message", "message.message_id" )

        ->->join("network_users","message.network_id = network_users.network_id and message.user_id = network_users.user_id","network_users.network_id") //no get column
        ->join("users","message.user_id = users.user_id",array()) //no get column
        ->where( "message.network_id = :network_id" )
        ->where( "message.del_flg = 0" )
        ->where( "network_users.del_flg = 0" )
        ->where( "users.del_flg = 0" )
        ->order( "message.regist_date DESC" );

 $ary[':network_id']   = $network_id;
 $ret = $db->fetchAll($sql, $ary);

return empty($ret[0]["user_id"]) ? array():$ret;

我总是得到结果是array(0) {}

当我在每个表中得到至少一列时,它会响应正确的结果。

对我的问题有什么想法吗????

感谢您的帮助。

【问题讨论】:

  • 它看起来像第一个where 子句。您传入了参数名称“network_id”而不是值。回显$sql 以查看生成的内容。
  • "message.user_id = network_users.user_id 和 message.user_id = network_users.user_id" 为什么会这样?
  • 嗨,我已经编辑了上面的代码。很抱歉这个错误。

标签: php zend-framework zend-db


【解决方案1】:

使用null 代替array()

所以它看起来像这样: ->join("users","message.user_id = users.user_id",null)

【讨论】:

  • 嗨,虽然我发现了问题,但我尝试使用 null 而不是 array() 它也很好用。
【解决方案2】:

我发现了问题,问题是我使用了return empty($ret[0]["user_id"]) ? array():$ret; 而不是return empty($ret[0]["message_id"]) ? array():$ret;

这就是我总是收到array(0) {}的原因。

感谢您的帮助。 ^_^

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2013-07-11
    • 1970-01-01
    • 1970-01-01
    • 2019-09-05
    • 1970-01-01
    • 1970-01-01
    • 2023-04-01
    • 2017-10-21
    相关资源
    最近更新 更多