Laravel响应转换不起作用


Laravel response transformations not working

我有以下

控制器功能

 public function show()
    {
        $users_id = Request::segment(4);
//        $this->user_bank_details_repository->setPresenter(new UserBankAccountPresenter);
        $account = $this->user_bank_details_repository->findByField('users_id', $users_id, $columns = ['user_bank_details_id','bank_name','bank_account_number','bank_ifsc_code','beneficiary_name','bank_account_type','bank_branch','created_at']);
        if(!$account)
        {
           return $this->response->noContent();
        }
        return $this->response->item($account, new UserBankAccountTransformer);
    }

变压器

   <?php
/* 
 * To change this license header, choose License Headers in Project Properties.
 * To change this template file, choose Tools | Templates
 * and open the template in the editor.
 */
namespace App'Api'V1'Transformers;
use App'Entities'UserBankDetails;
use League'Fractal'TransformerAbstract;
class UserBankAccountTransformer extends TransformerAbstract {
    public function transform(UserBankDetails $bank_details)
    {
            return [
                'id'=> (int) $bank_details->user_bank_details_id,
                'bank_name'     => $bank_details->bank_name,
                'bank_account_number' => (int) $bank_details->bank_account_number,
                'bank_account_type' => $bank_details->bank_account_type,
                'bank_beneficiary_name' => $bank_details->beneficiary_name,
                'bank_branch'=> $bank_details->bank_branch
            ];
    }
}

我正在使用存储库模式设计,并将dingo用于我的REST框架。

我总是得到的回复

{
  "user_bank_details": [
    {
      "user_bank_details_id": 1,
      "bank_name": "jbjb",
      "bank_account_number": "939393933939",
      "bank_ifsc_code": "ABCD0000047",
      "beneficiary_name": "Gaf",
      "bank_account_type": "savings",
      "bank_branch": "Mad(E)",
      "created_at": "2015-12-23 17:05:39"
    }
  ]
}

而不是转换后的json。我也没有犯任何错误。尝试使用

 return $this->response->item($account, new UserBankAccountTransformer::class);

但反应仍然没有改变。我尽了我所能,但没有成功:(

尽管这个问题是一年多前的事了,但为了任何有类似问题的人,这里的可疑之处在于您使用了:item而不是collection

如果$account包含一个集合,那么这意味着这个答案是正确的:也就是说,这个:

return $this->response->item($account, new UserBankAccountTransformer::class);

应为:

return $this->response->collection($account, new UserBankAccountTransformer::class);

附言:我在Laravel 5.2上也遇到过这种情况。*这就是为什么我觉得这可能会有所帮助。