Топливный PHP - метод to_array() и множественные отношения принадлежат к этому и энергичная загрузка

Я пытаюсь перенести некоторые устаревшие модели / схемы данных в API топлива, и у меня возникла странная проблема с to_array() метод на модели, которая имеет два $_belongs_to свойства.

Когда я загружаю модель без to_array() метод, я правильно получаю оба связанных элемента с энергичной загрузкой, но как только я пропущу их через эту функцию, чтобы преобразовать данные, чтобы сделать их усваиваемыми новым API, он удалит второй $_belongs_to имущество. Если я переупорядочу реквизит в $belongs_to массив, он покажет, какой элемент является первым в массиве.

У меня вопрос, как я могу преобразовать эти данные в массив без потери второго отношения?

Вот несколько приведенных примеров для удобства использования:

Модель транзакции:

protected static $_belongs_to = array(
    'benefactor' => array(
        'key_from' => 'from_user_id',
        'model_to' => 'Model\\Legacy\\User',
        'key_to' => 'id',
    ),
    'user' => array(
        'key_from' => 'user_id',
        'model_to' => 'Model\\Legacy\\User',
        'key_to' => 'id',
    ),
);

Контроллер транзакций:

$result = array();
$id = $this->param('id');

if (!empty($id)) {
    $transaction = Transaction::find($id, array('related' => array('user', 'benefactor',)));
    if (!empty($transaction)) {

        // Works -- both benefactor and user are returned
        $result['transaction_works'] = $transaction;

        // Does not work -- only the benefactor is returned
        $result['transaction_doesnt_work'] = $transaction->to_array();
    }
}

return $this->response($result);

1 ответ

Решение

Любой гугл, ищущий помощи по этому вопросу, по-видимому, смог вернуть все отношения, просто выполнив to_array() Метод перед установкой переменной return/results:

$result = array();
$id = $this->param('id');

if (!empty($id)) {
     $transaction = Transaction::find($id, array('related' => array('user', 'benefactor',)));
    if (!empty($transaction)) {
        $transaction->to_array();
        $result['transaction_works'] = $transaction;
    }
}

return $this->response($result);

Удачи!

Другие вопросы по тегам