2016-09-15 6 views
0

두 개의 가상 필드를 가져 오기 레코드에 병합하고 싶습니다. 그러나 하나의 가상 필드에 대해 수행 한 결과, 다른 하나는 null을 반환합니다.cakephp에서 여러 개의 가상 필드 데이터를 얻는 방법 3.2

저는 두 개의 가상 필드 데이터를 반환하는 방법을 매우 혼란 스럽습니다. 다음은

아래

모델에서 코드 입니다/법인/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.

만약 내가 2 대신 하나를 지키고 있다면, 나는 내가 필요로하는 것을 얻고있다.

제발. 모든 제안을 매우 높이 평가 될 것입니다. :)

+1

단일 기능으로 두 개의 리턴을 쓸 수 없습니다. 두 번째 명령문은 결코 실행되지 않습니다. –

+0

@Ravi Hirani 네, 알고 있습니다. 작동하지 않습니다. 하지만 어떤 방법으로도 한 번에 두 가지 결과를 얻을 수 있습니다. – sradha

+1

다른 함수를 만들고 두 번째 명령문을이 함수에 씁니다. 반환 값을 사용하고 있기 때문입니다. 또는 단일 함수에서 배열을 반환하고 배열에 봇 값을 넣습니다. –

답변

1

의견에 언급 된대로 하나의 함수에 2 개의 리턴을 쓸 수 없습니다.

배열을 사용해야합니다. 두 값을 array에 넣고 배열을 반환합니다.

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; 
} 
+0

예. 알겠습니다. 정말 고마워요. 내가 여기에서 묻고있는 그 어리석은 물건. – sradha

+0

:) 다시 한 번 감사드립니다. – sradha

+1

당신을 환영합니다 :-) 도와 드리겠습니다. –