我正在尝试将一些遗留数据模型/模式迁移到燃料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);
答案 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);
祝你好运!