2016-09-15 3 views
0

フェッチレコードに2つの仮想フィールドをマージする必要があります。しかし、1つの仮想フィールドに対してのみ実行しました。もう1つはnullを返します。cakephpで複数の仮想フィールドデータを取得する方法3.2

私は2つの仮想フィールドデータを返す方法をかなり混乱しています。

以下

は出力ここで支払わ

[ 
    { 
      "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 
    } 
] 

がnull来ているが、110に来る必要がありますされたコードの下にモデル/エンティティ/ 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']; 
    } 

です-70 = 40。

私が2の代わりに1つを保持している場合、私は必要としているものを得ています。

お願いします。 ご意見は高く評価されます。 :)

+1

1つの関数に2つのリターンを書き込むことはできません。 2番目のステートメントは決して実行されません。 –

+0

@Ravi Hiraniはい、私は知っている、それは動作しません。 しかし、私は一度に2つの結果を得ることができるように、何らかの方法があります。 – sradha

+1

別の関数を作成し、2番目の文を書き込んでください。戻り値を使用しているためです。 1つの関数でORを返し、配列を返し、ボットの値を配列に格納します。 –

答えて

1

コメントに記載されている1つの関数に2つのリターンを書くことはできません。

アレイを使用する必要があります。両方の値を配列の中に入れ、配列を返します。

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

あなたは歓迎します:-)喜んで助けてください。 –

関連する問題