Php Zend Framwork select()提供了意外的SQL

Php Zend Framwork select()提供了意外的SQL,php,mysql,sql,zend-framework,zend-db,Php,Mysql,Sql,Zend Framework,Zend Db,对于我的应用程序,我在消息模型中有一个方法,它返回当前用户($id)发送的所有消息。它使用3个联接从3个表返回信息。由于发送者和接收者都来自同一个“users”表,因此我必须在这些列中使用别名a 我的消息模型中的方法: public function getSentMessages($id) { $messageModel = new self(); $select = $messageModel->select() ->from(

对于我的应用程序,我在消息模型中有一个方法,它返回当前用户($id)发送的所有消息。它使用3个联接从3个表返回信息。由于发送者和接收者都来自同一个“users”表,因此我必须在这些列中使用别名a

我的消息模型中的方法:

public function getSentMessages($id) 
{
    $messageModel = new self();
    $select = $messageModel->select()
                 ->from(array('m' => 'messages'),
                        array('m.id', 'm.title', 'm.send',
                              's.id AS s_id', 's.firstname AS s_fn', 's.lastname AS s_ln', 's.email AS s_e', 
                              'r.id AS r_id', 'r.firstname AS r_fn', 'r.lastname AS r_ln', 'r.email AS r_e'))
                 ->join(array('s' => 'users'),
                        'm.from = s.id')
                 ->join(array('mu' => 'messages_users'),
                        'm.id = mu.message_id')
                 ->join(array('r' => 'users'),
                        'r.id = mu.user_id')
                 ->where('m.from = ?', $id);


    $select->setIntegrityCheck(false); 
    $messages = $messageModel->fetchAll($select);

    return $messages;
}
奇怪的事情发生了:resultrow是由我要求的所有专栏组成的。。。但不知何故,所有列(包括我没有要求的列)都是在后面添加的。像这样:

id  title   send    s_id    s_firstname     s_lastname  s_email     r_id    r_firstname     r_lastname  r_email     id  username    password    firstname   lastname    email   role    id  message_id  user_id     status  id  username    password    firstname   lastname    email   role
我发现Zend框架返回的SQL查询不是我所期望的。。在这里(为了更好的可读性而清理):

在SELECT语句末尾选中这些星号(*)。。这些是怎么到那里的?Zend文档告诉我,只有在没有列的情况下才使用asterix


谢谢你的帮助

联接有三个参数:

在每个Join子句的末尾添加一个空白值

join(array('s' => 'users'),'m.from = s.id','')

谢谢!我认为这些选项(如“*”中的可选项)不是默认值。问题解决者乐意帮忙。如果你认为答案有用,别忘了接受;)我没有添加空白值,而是将相关列从from子句移动到join子句,nice和tidy。
join(array('s' => 'users'),'m.from = s.id','')