Как получить несколько данных виртуального поля в cakephp 3.2

Я хочу, чтобы два виртуальных поля были объединены в записях выборки. Но я сделал это только для одного виртуального поля, другое возвращает значение null.

Я совершенно не понимаю, как вернуть данные двух виртуальных полей. Для одного это нормально.

Ниже приведены коды в model/Entity/Order.php

protected $_virtual = ['due','paid'];


    protected function _getDue() {
        return $this->_properties['collection']['due_amount'];
         return $this->_properties['collection']['total_sale_amount']-$this->_properties['collection']['due_amount'];
    }

Ниже приведен вывод

[
    {
          "id": 20,
          "collection": {
            "id": 150,
            "order_id": 20,
            "total_sale_amount": 110,
            "net_paid": 10,
            "due_amount": 70,
            "is_paid": 1,
            "payment_mode": "DD",
            "reference_num": "",
            "created": "2016-09-09T00:00:00+0000"
        },
        "due": 70,
        "paid": null
    }
]

Здесь оплачено ноль, а должно прийти 110-70 = 40.

если я оставлю один вместо двух, я получу то, что мне нужно.

Пожалуйста, предложите мне. любое предложение будет высоко оценено. :)


person sradha    schedule 15.09.2016    source источник
comment
Вы не можете написать два возврата в одной функции. второй оператор никогда не будет выполняться.   -  person Ravi    schedule 15.09.2016
comment
@ Рави Хирани да, я знаю, это не сработает. Но есть ли способ, чтобы я мог получить два результата одновременно.   -  person sradha    schedule 15.09.2016
comment
сделайте еще одну функцию и напишите в нее второй оператор. потому что вы используете возвращаемое значение. ИЛИ в одной функции вернуть массив и поместить значения бота в массив.   -  person Ravi    schedule 15.09.2016


Ответы (1)


Как упоминалось в комментарии, вы не можете написать два возврата в одной функции.

Вы должны использовать массив. поместите оба значения в массив и верните массив.

 protected function _getDue() {
    $data = [];
    $data['due'] = $this->_properties['collection']['due_amount'];
    $data['paid'] = $this->_properties['collection']['total_sale_amount']-$this->_properties['collection']['due_amount'];
    return $data;
 }
person Ravi    schedule 15.09.2016
comment
Да я получил его. Большое тебе спасибо . Это глупости, которые я здесь спрашиваю. - person sradha; 15.09.2016
comment
:) Еще раз спасибо. - person sradha; 15.09.2016