【问题标题】:How to remove fields from Laravel JSON Api response如何从 Laravel JSON Api 响应中删除字段
【发布时间】:2018-07-29 03:07:45
【问题描述】:

我有一个 API 返回一个与另一个对象具有一对一关系的对象。由于对象背后的模型确实有时间戳,这些也是在请求 API 时传递的。

// Get all transactions
Route::get('transaction', function() {
return Transaction::with('Personone','Persontwo')->get();
});

如何防止 Laravel 返回 API 中对象的时间戳?

我用谷歌搜索,但只找到了一些中间件或响应宏的提示,但没有找到指向正确方向的示例。也许你能帮帮我。

【问题讨论】:

  • 考虑使用a transformer
  • 我支持变压器的建议。它们为将模型映射到响应提供了清晰的抽象。
  • 你使用的是什么版本的 Laravel?如果您使用 laravel 5.4 或更高版本,我认为您可以使用 laravel 自己的转换

标签: laravel rest api response


【解决方案1】:

您可以将属性设置为“隐藏”,这样它们就不会出现在 json 中。 docs

class Transaction extends Model
{
    /**
     * The attributes that should be hidden for arrays.
     *
     * @var array
     */
    protected $hidden = ['timestamp'];
}

【讨论】:

    【解决方案2】:

    我不确定我是否正确地回答了问题,但是如果您想从急切的负载中进行选择,有两种方法

    第一个是内联选择

    Route::get('transaction', function () {
        return Transaction::with('Personone:id,foo,bar', 'Persontwo:id,foo,bar,foobar')->get();
    });
    

    第二个是通过闭包

    Route::get('transaction', function () {
        return Transaction::with([
            'Personone' => function ($query) {
                $query->select('id', 'foo', 'bar');
            },
            'Persontwo' => function ($query) {
                $query->select('id', 'foo', 'bar', 'foobar');
            }])->get();
    });
    

    急切加载特定列您可能并不总是需要每一列 从您正在检索的关系中。为此,雄辩 允许您指定您想要的关系的哪些列 检索:

    $users = App\Book::with('author:id,name')->get();


    约束急切加载 有时您可能希望急切加载 关系,但还为 急切加载查询。这是一个例子:

    $users = App\User::with(['posts' => function ($query) { $query->where('title', 'like', '%first%'); }])->get();在这个例子中,Eloquent 只会预先加载帖子标题所在的帖子 列包含单词 first。当然,您可以调用其他查询 构建器方法来进一步自定义急切加载操作:

    $users = App\User::with(['posts' => function ($query) { $query->orderBy('created_at', 'desc'); }])->get();

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2015-07-02
      • 2018-06-01
      • 2020-12-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多