Коллекции Cakephp добавляют новый элемент в функцию закрытия

#cakephp

#cakephp

Вопрос:

Я использую CakePHP Collections для итерации записей. Я хочу создать новый элемент в каждом вызываемом balance_history , но, похоже, я не могу его добавить. Я не получаю никакой ошибки.

     $journalEntries = $this->JournalEntries->find()
        ->where(['journal_id' => $journal_id])
        ->contain('Strategies.StrategiesConditions', 'JournalEntriesStrategyConditions')
        ->enableHydration(false)
        ->toList();

    $collection = new Collection($journalEntries);
    $closeDateSorted = $collection->sortBy('close_date_time', SORT_ASC);

    $balance = $journal->starting_balance;
    $closeDateSorted = $closeDateSorted->each(function ($jEntry) use (amp;$balance) {
        $balance  = $jEntry['profit'];
        //$jEntry  = [ "history_balance" => $balance ];
        $jEntry['history_balance'] = $balance;
    });
    debug($closeDateSorted->toArray());

[
    (int) 2 => [
        'id' => (int) 23,
        'journal_id' => (int) 1,
        'ticket_number' => 'testbalance2',
        'entry_date_time' => object(CakeI18nFrozenTime) {

            'time' => '2020-09-03 00:08:22.000000 00:00',
            'timezone' => 'UTC',
            'fixedNowTime' => false
        
        },
        'entry_price' => null,
        'strategy_id' => null,
        'timeframe' => '',
        'created' => object(CakeI18nFrozenTime) {

            'time' => '2020-08-27 20:54:54.000000 00:00',
            'timezone' => 'UTC',
            'fixedNowTime' => false
        
        },
        'modified' => object(CakeI18nFrozenTime) {

            'time' => '2020-08-27 20:54:54.000000 00:00',
            'timezone' => 'UTC',
            'fixedNowTime' => false
        
        },
        'strategy' => null
    ],
    (int) 0 => [
        'id' => (int) 21,
        'journal_id' => (int) 1,
        'ticket_number' => 'sdfsdfsdf 2',
        'entry_date_time' => object(CakeI18nFrozenTime) {

            'time' => '2020-09-05 07:49:04.000000 00:00',
            'timezone' => 'UTC',
            'fixedNowTime' => false
        
        },
        'entry_price' => null,
        'strategy_id' => null,
        'timeframe' => '',
        'created' => object(CakeI18nFrozenTime) {

            'time' => '2020-08-26 22:33:28.000000 00:00',
            'timezone' => 'UTC',
            'fixedNowTime' => false
        
        },
        'modified' => object(CakeI18nFrozenTime) {

            'time' => '2020-09-21 20:35:12.000000 00:00',
            'timezone' => 'UTC',
            'fixedNowTime' => false
        
        }
    ],
    (int) 4 => [
        'id' => (int) 32,
        'journal_id' => (int) 1,
        'ticket_number' => 'sdfsdf',
        'entry_date_time' => object(CakeI18nFrozenTime) {

            'time' => '2020-10-19 20:28:46.000000 00:00',
            'timezone' => 'UTC',
            'fixedNowTime' => false
        
        },
        'entry_price' => null,
        'strategy_id' => null,
        'timeframe' => '',
        'created' => object(CakeI18nFrozenTime) {

            'time' => '2020-09-19 20:29:33.000000 00:00',
            'timezone' => 'UTC',
            'fixedNowTime' => false
        
        },
        'modified' => object(CakeI18nFrozenTime) {

            'time' => '2020-09-19 20:29:33.000000 00:00',
            'timezone' => 'UTC',
            'fixedNowTime' => false
        
        },
        'strategy' => null
    ],
    (int) 1 => [
        'id' => (int) 22,
        'journal_id' => (int) 1,
        'ticket_number' => 'testbalance',
        'entry_date_time' => object(CakeI18nFrozenTime) {

            'time' => '2020-09-03 00:08:13.000000 00:00',
            'timezone' => 'UTC',
            'fixedNowTime' => false
        
        },
        'entry_price' => null,
        'strategy_id' => null,
        'timeframe' => '',
        'created' => object(CakeI18nFrozenTime) {

            'time' => '2020-08-27 20:49:41.000000 00:00',
            'timezone' => 'UTC',
            'fixedNowTime' => false
        
        },
        'modified' => object(CakeI18nFrozenTime) {

            'time' => '2020-08-27 20:49:41.000000 00:00',
            'timezone' => 'UTC',
            'fixedNowTime' => false
        
        },
        'strategy' => null
    ],
    (int) 3 => [
        'id' => (int) 31,
        'journal_id' => (int) 1,
        'ticket_number' => 'cvbcvb',
        'entry_date_time' => object(CakeI18nFrozenTime) {

            'time' => '2020-09-18 21:06:12.000000 00:00',
            'timezone' => 'UTC',
            'fixedNowTime' => false
        
        },
        'entry_price' => null,
        'strategy_id' => null,
        'timeframe' => '',
        'created' => object(CakeI18nFrozenTime) {

            'time' => '2020-09-19 20:09:51.000000 00:00',
            'timezone' => 'UTC',
            'fixedNowTime' => false
        
        },
        'modified' => object(CakeI18nFrozenTime) {

            'time' => '2020-09-19 20:09:51.000000 00:00',
            'timezone' => 'UTC',
            'fixedNowTime' => false
        
        },
        'strategy' => null
    ]
]
  

Комментарии:

1. Итак, каков результат отладки?

2. извините, нужно было добавить раньше

3. Похоже, что вещи в вашей коллекции — это массивы, которые не будут передаваться по ссылке на функцию обратного вызова. Есть ли шанс, что вы можете сделать их объектами или ArrayObjects вместо этого?

4. Спасибо @GregSchmidt. Я удалил ->enableHydration(false) , и это не работает.