PHP, как добавить элементы списка в другие элементы списка - PullRequest
0 голосов
/ 29 ноября 2018

У меня есть список финансовых запусков.Каждый запуск может иметь или не иметь несколько платежей.Поэтому для каждого финансового запуска я ищу список платежей.Я хотел бы, чтобы этот список находился в рамках соответствующего финансового запуска.

Моя полная функция:

    public function customerInvoice()
    {
        $_customer = filtra_int($this->input->post('cliente_id'));
        $this->redireciona_id_nula($_customer, $this->url . '/ficha');
        $_view = [];
        $this->load->helper(['filter', 'string', 'currency', 'validate', 'phone']);

        $_view['glyph'] = 'user';
        $_view['enterprise'] = $this->enterprise;
        $_view['buttons'] = $this->_getFormButtons($_customer, $this->url . '/ficha');

        $this->load->model('lancamento_model', 'lancamentoModel');
        $_view['releases'] = $this->lancamentoModel->getCustomerRelease($_customer);
        foreach ($_view['releases'] as $i => $value) {
//            $_view['releases']['order'][$i] = $this->lancamentoModel->getCustomerOrder($value->id);
             $value['order'] = $this->lancamentoModel->getCustomerOrder($value->id);
        }

        $this->addBreadcrumb('Lançamentos', base_url() . 'lancamentos');
        $this->addBreadcrumb('Ficha', base_url() . 'lancamentos/ficha');
        $this->addBreadcrumb('Exibir');

        $this->extras['css'][] = $this->load->view('lancamentos/consulta/ficha_cliente/form/css', null, true);
        $this->extras['scripts'][] = $this->load->view('lancamentos/consulta/ficha_cliente/form/js', $_view, true);

//        $pagina = $this->getHtmlPagina('Ficha cliente', $_view);
//        $this->load->view('lancamentos/consulta/ficha_cliente/view/view', $pagina);


        $this->output->set_content_type('application/json');
        $this->output->set_output(json_encode($_view));
    }

json результат:

 {  
   "release":{  
      "0":{  
         "id":"380",
         "data_vcto":"2016-01-15",
         "data_emissao":"2016-01-15",
         "documento":"292\/1",
         "vlr":"67.00",
         "vlr_divida":"0.00"
      },
      "order":[  
         [  
            {  
               "id":"142206",
               "data_vcto":"2016-01-15 09:59:24",
               "vlr_desconto":"0.00",
               "vlr_multa":"0.00",
               "pago_em":"2018-11-19 09:59:24",
               "conta_nome":"Caixa",
               "tipo_nome":"Vendas",
               "vlr_movimento":"67.00",
               "tipo_pagamento_nome":"Dinheiro"
            },
            {  
               "id":"213",
               "data_vcto":"2016-01-13 09:59:24",
               "vlr_desconto":"0.00",
               "vlr_multa":"0.00",
               "pago_em":"2018-11-19 09:59:24",
               "conta_nome":"Caixa",
               "tipo_nome":"Vendas",
               "vlr_movimento":"22.00",
               "tipo_pagamento_nome":"Dinheiro"
            }
         ]
      ]
   }
}

Я хотел бы что-то подобное

{  
   "release":{  
      "0":{  
         "id":"380",
         "data_vcto":"2016-01-15",
         "data_emissao":"2016-01-15",
         "documento":"292\/1",
         "vlr":"67.00",
         "vlr_divida":"0.00",
         "order":[  
            {  
               "id":"142206",
               "data_vcto":"2016-01-15 09:59:24",
               "vlr_desconto":"0.00",
               "vlr_multa":"0.00",
               "pago_em":"2018-11-19 09:59:24",
               "conta_nome":"Caixa",
               "tipo_nome":"Vendas",
               "vlr_movimento":"67.00",
               "tipo_pagamento_nome":"Dinheiro"
            },
            {  
               "id":"213",
               "data_vcto":"2016-01-13 09:59:24",
               "vlr_desconto":"0.00",
               "vlr_multa":"0.00",
               "pago_em":"2018-11-19 09:59:24",
               "conta_nome":"Caixa",
               "tipo_nome":"Vendas",
               "vlr_movimento":"22.00",
               "tipo_pagamento_nome":"Dinheiro"
            }
         ]
      }      
   }
}

это возможно?И что мне делать в foreach?

Обновление : я сделал так, как предложил @Yulio Aleman Jimenez ... но после этого появилась ошибка

Неустранимая ошибка: невозможно использовать объект типа stdClass в качестве массива в C: \ xampp \ htdocs \ beauty \ application \ controllers \ Lancamentos.php в строке 829

Сообщение: невозможно использовать объектвведите stdClass как массив

Ошибка печати

1 Ответ

0 голосов
/ 29 ноября 2018

Я думаю, вы должны изменить свой код следующим образом:

$_releases = $this->lancamentoModel->getCustomerRelease($_customer);
foreach ($_releases as $i => $value) {
    // try with this changes
    $value = $this->lancamentoModel->getCustomerOrder($value->id);
    $_releases[$i] = (object)array_merge((array)$_releases[$i], array('order' => $value));
}

Дело в том, чтобы хранить массив заказов в order каждого выпуска.

Обновление

Вы работаете с объектами, это причина, которую вы должны привести к array, добавить новые значения в order, а затем привести к object.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...