【问题标题】:ZF2 How to add model class of sub items to main modelZF2如何将子项目的模型类添加到主模型
【发布时间】:2016-09-17 13:24:53
【问题描述】:

我有一个简单的索引操作:

$reminders = $this->reminderTable->fetchAll();

foreach ($reminders as $reminder) {
    $reminder->receivers = $this->reminderTable->getReceivers($reminder->id);
}

return new ViewModel(array(
    'reminders' => $reminders
));

get 接收者(主表的子项)如下所示:

public function getReceivers($id)
{
    $adapter = $this->tableGateway->getAdapter();
    $receiversTable = new TableGateway('ga_reminders_receivers', $adapter);

    $resultSet = $receiversTable->select(function (Select $select) use ($id) {

        $select->join('ga_users', 'ga_reminders_receivers.receiver_uid = ga_users.uid', array('uid', 'firstname', 'lastname', 'email', 'telephone'), 'left');
        $select->where('ga_reminders_receivers.rid = ' . $id);

    });

    return $resultSet;
}

这给了我一个奇特的错误

这个结果是一个只向前的结果集,在之后调用 rewind() 不支持向前移动。

所以,我想我的问题是:当我获取结果集时,由于exchangearray(),它会归入模型类。但是我想如何用子模型列表填充模型属性?

在这种情况下,模型是Reminder

class Reminder { // from the reminders table

public function exchangeArray($data)
{
    $this->id = (!empty($data['rid'])) ? str_pad($data['rid'], 5, '0', STR_PAD_LEFT) : null;
    $this->label = (!empty($data['label'])) ? $data['label'] : null;
    // etc.
    $this->receivers = array(
        new Receiver(1),
        new Receiver(2),
        // list of objects from the reminders_receivers table
    )
}

第二个问题:需要单独的getReceivers() 方法吗?也许它可以集成在 1 个查询中。只要使用模型类ReminderReceiver 就可以了。

【问题讨论】:

    标签: php zend-framework2 models


    【解决方案1】:

    在这种情况下,您必须使用缓冲区。

    public function getReceivers($id)
    {
        $adapter = $this->tableGateway->getAdapter();
        $receiversTable = new TableGateway('ga_reminders_receivers', $adapter);
    
        $resultSet = $receiversTable->select(function (Select $select) use ($id) {
    
            $select->join('ga_users', 'ga_reminders_receivers.receiver_uid = ga_users.uid', array('uid', 'firstname', 'lastname', 'email', 'telephone'), 'left');
            $select->where('ga_reminders_receivers.rid = ' . $id);
    
        });
    
    
        $resultSet->buffer();
        return $resultSet;
    }
    

    【讨论】:

      猜你喜欢
      • 2015-06-07
      • 2021-07-24
      • 2023-03-24
      • 2015-09-30
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2015-09-05
      相关资源
      最近更新 更多