1

一部のレガシー データ モデル/スキーマを燃料 API に移行しようとしていますが、 2 つのプロパティto_array()を持つモデルのメソッドで奇妙な問題が発生しました。$_belongs_to

メソッドを使用せずにモデルをロードすると、to_array()両方の関連アイテムを熱心なロードで適切に受け取りますが、これらをこの関数に渡してデータを変換し、新しい API で消化できるようにするとすぐに、2 番目の$_belongs_toプロパティが取り除かれます。配列内の小道具を並べ替えると、$belongs_to配列内の最初のアイテムが表示されます。

私の質問は、2 番目の関係を失わずにこのデータを配列に変換するにはどうすればよいですか?

参照しやすいようにクリーンアップされた例を次に示します。

取引モデル:

protected static $_belongs_to = array(
    'benefactor' => array(
        'key_from' => 'from_user_id',
        'model_to' => 'Model\\Legacy\\User',
        'key_to' => 'id',
    ),
    'user' => array(
        'key_from' => 'user_id',
        'model_to' => 'Model\\Legacy\\User',
        'key_to' => 'id',
    ),
);

トランザクション コントローラ:

$result = array();
$id = $this->param('id');

if (!empty($id)) {
    $transaction = Transaction::find($id, array('related' => array('user', 'benefactor',)));
    if (!empty($transaction)) {

        // Works -- both benefactor and user are returned
        $result['transaction_works'] = $transaction;

        // Does not work -- only the benefactor is returned
        $result['transaction_doesnt_work'] = $transaction->to_array();
    }
}

return $this->response($result);
4

1 に答える 1

0

この問題について助けを求めているグーグル社員のために、 return/results 変数を設定するにメソッドを実行するだけで、すべての関係を返すことができたようです。to_array()

$result = array();
$id = $this->param('id');

if (!empty($id)) {
     $transaction = Transaction::find($id, array('related' => array('user', 'benefactor',)));
    if (!empty($transaction)) {
        $transaction->to_array();
        $result['transaction_works'] = $transaction;
    }
}

return $this->response($result);

幸運を!

于 2015-03-09T17:59:12.057 に答える