加油PHP - to_array()方法和多个belongs_to关系和急切加载

时间:2015-03-06 08:02:07

标签: fuelphp fuelphp-orm

我正在尝试将一些遗留数据模型/模式迁移到燃料API,并且在具有两个to_array()属性的模型上遇到$_belongs_to方法的奇怪问题。

当我在没有to_array()方法的情况下加载模型时,我正确地接收了两个相关的项目,但是只要我通过这个函数传递它们来转换数据以使其可以被新的API消化,它将删除第二个$_belongs_to属性。如果我在$belongs_to数组中重新排序道具,它将显示数组中第一个项目。

我的问题是,如何在不丢失第二种关系的情况下将此数据转换为数组?

以下是一些清理过的示例,以便于参考:

交易模型:

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);

1 个答案:

答案 0 :(得分:0)

对于在这个问题上寻求帮助的任何googlers,我似乎能够通过简单地执行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);
祝你好运!