Fuelphp Fuel PHP-to_array()方法和多个属于关系和快速加载

Fuelphp Fuel PHP-to_array()方法和多个属于关系和快速加载,fuelphp,fuelphp-orm,Fuelphp,Fuelphp Orm,我试图将一些遗留数据模型/模式迁移到fuel API,但在一个具有两个$属性的模型上使用to_array()方法时遇到了一个奇怪的问题 当我在不使用to_array()方法的情况下加载模型时,我会正确地接收这两个相关项,并立即加载,但只要我通过此函数将它们转换为新API可消化的数据,它就会去掉第二个$\u所属属性。如果我重新订购$所属数组中的道具,它将显示数组中的第一个道具 我的问题是,如何在不丢失第二个关系的情况下将此数据转换为数组 以下是一些经过清理的示例,以便于参考: 交易模式: prot

我试图将一些遗留数据模型/模式迁移到fuel API,但在一个具有两个
$属性的模型上使用
to_array()
方法时遇到了一个奇怪的问题

当我在不使用
to_array()
方法的情况下加载模型时,我会正确地接收这两个相关项,并立即加载,但只要我通过此函数将它们转换为新API可消化的数据,它就会去掉第二个
$\u所属
属性。如果我重新订购
$所属
数组中的道具,它将显示数组中的第一个道具

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

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

交易模式:

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);
事务控制器:

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

对于任何在这个问题上寻求帮助的谷歌用户,我似乎能够通过在设置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);

祝你好运

我不太确定这是一个to_数组问题。它处理所有已加载(和未加载)的关系($this->\u data\u relations)。您确定所有关系都已加载吗?你用哪个版本?嗨,马克,谢谢你的回复。当在执行方法的同时设置数组参数时,似乎会发生错误,它只返回关系数组中的第一项。不过,在设置变量之前这样做是可行的。您只是将其作为对象传递吗?我相信
$transaction->to_array()本身只创建一个数组版本,然后将其丢弃,因为您不存储它。它看起来很有效,因为
$this->response($result)
具有正确转换的功能。看起来很有趣。另外,如果省略
to_array
行,会得到相同的结果吗?这两点都是正确的。它不存储它,但将变量设置为其值并返回该变量就可以了。如果我省略了_数组,它将按预期工作(返回具有所有关系的对象),尽管数据的格式不是我需要的格式。