使用 Set::extract 后未获取关联数据

After using Set::extract not getting associative data

我正在尝试获取 json 没有型号名称的数据,所以我在这里尝试提取如下代码

$transaction = $this->Transaction->find('all', array('conditions'=>array('Transaction.user_id'=>$id)));
$transaction = Set::extract('/Transaction/.', $transaction);

现在的问题是我没有在 json 输出中获取关联数据。这是 json 看起来像

[{"id":"130","transaction_type":"1","user_id":"44","entry_by":"pitocms","added_id":"25","perticuler":"test","Volume":null,"per_unit":null,"credit_money":"1500","debit_money":"0","balance":"-1500","created":"2015-12-27 21:21:11","modified":"2015-12-27 21:21:11"}]

实际上有2个模型交易和用户。

Set::extract() 正是这样做的,它在从源数组中提取选定数据后创建一个新数组。因此,为了获取用户信息,您也必须将其提取出来:

$data = $this->Transaction->find('all',array('conditions'=>array('Transaction.user_id'=>$id)));
$transactions = Set::extract('/Transaction/.', $data);
$users = Set::extract('/User/.', $data);

正如@ndm 在评论中所述,class Set 长期以来一直被弃用,取而代之的是 class Hash。您可以通过以下方式实现相同的效果:

$data = $this->Transaction->find('all', array('conditions'=>array('Transaction.user_id'=>$id)));        
$transactions = Hash::extract($data,'{n}.Transaction');
$users = Hash::extract($data,'{n}.User');