laravel框架利用resources来整合api接口字段

发布时间:2022-09-07 23:34:51 阅读:148次

我们在用laravel进行日常接口开发中

经常需要选择字段

有时为了方便直接select * 但是这个时候字段会非常多

如果用select('字段1','字段2','字段3')也比较繁锁

有没有优雅的方法呢

'API Resources' 在 Laravel 5.5 中引入,作为是“将您的模型和模型集合表达并轻松转换为 JSON 数据格式”的一种方式。

使用方法

php artisan make:resource Customer

然后我们可以看到,在app/Http文件夹下,多出了一个名为Resources文件夹下,其中含有一个名为Customer.php的文件:


<?php
 
namespace App\Http\Resources;
 
use Illuminate\Http\Resources\Json\JsonResource;
 
class Customer extends JsonResource
{
  /**
   * Transform the resource into an array.
   *
   * @param \Illuminate\Http\Request $request
   * @return array
   */
  public function toArray($request)
  {
    return parent::toArray($request);
  }
}

接下来我们可以 自定义自己想要的字段

    public function toArray($request)
    {
        return [
            'title' => $this->title,
            'content' => $this->content,
            'slug' => $this->slug
        ];
    }
复制代码

在控制器中使用

<?php
 
namespace App\Http\Controllers;
 
use App\Customer;
use App\Http\Resources\Customer as CustomerResource;
use App\Http\Controllers\Controller;
 
class CustomerController extends Controller
{
  /**
   * Simple function to fetch all customers with their shipping addresses
   *
   * @return String
   */
  public function index()
  {
    $customers = Customer::with(['shippingAddress', 'shippingAddress.country', 'shippingAddress.province', 'shippingAddress.city'])->get();
     
    //这里我们使用了新的Resource类
    return CustomerResource::collection($customers);
  }
}

如果controller是一维数组那么使用以下代码

若要处理单个对象,我们需要使用以下代码:

public function show($id)
{
  $customer = Customer::findOrFail($id);
  return new CustomerResource($customer);
}

如有问题,可以QQ搜索群1028468525加入群聊,欢迎一起研究技术

支付宝 微信

有疑问联系站长,请联系QQ:QQ咨询

转载请注明:laravel框架利用resources来整合api接口字段 出自老鄢博客 | 欢迎分享