Fuelphp Fuel PHP-to_array()方法和多个属于关系和快速加载
我试图将一些遗留数据模型/模式迁移到fuel API,但在一个具有两个Fuelphp Fuel PHP-to_array()方法和多个属于关系和快速加载,fuelphp,fuelphp-orm,Fuelphp,Fuelphp Orm,我试图将一些遗留数据模型/模式迁移到fuel API,但在一个具有两个$属性的模型上使用to_array()方法时遇到了一个奇怪的问题 当我在不使用to_array()方法的情况下加载模型时,我会正确地接收这两个相关项,并立即加载,但只要我通过此函数将它们转换为新API可消化的数据,它就会去掉第二个$\u所属属性。如果我重新订购$所属数组中的道具,它将显示数组中的第一个道具 我的问题是,如何在不丢失第二个关系的情况下将此数据转换为数组 以下是一些经过清理的示例,以便于参考: 交易模式: prot
$属性的模型上使用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
行,会得到相同的结果吗?这两点都是正确的。它不存储它,但将变量设置为其值并返回该变量就可以了。如果我省略了_数组,它将按预期工作(返回具有所有关系的对象),尽管数据的格式不是我需要的格式。