Laravel:在hasMany()调用之后使用makeVisible()

问题描述 投票:0回答:1

我正在使用lumen开发REST API。我使用了这两个模型UserPost。在我的User模型中,我可以使用hasMany()方法获取所有用户的帖子:

<?php

namespace App;

use Illuminate\Database\Eloquent\Model;

class User extends Model
{
  // ...
  public function posts()
  {
    return $this->hasMany('App\Post');
  }
  // ...

获得我所有的用户帖子真的很有帮助:

return response()->json(User::find($id)->posts, 200);

问题是Post模型具有一些未在响应中显示的隐藏属性(这是正常行为),但是对于某些请求,我需要将其返回。为此,laravel提供了一种称为makeVisible()的方法。因此,我决定在posts()方法中使用它:

  public function posts()
  {
    return $this->hasMany('App\Post')->makeVisible(['hiddenAttribute', ...]);
  }

但是不幸的是事情并没有那么简单,我得到了这个错误:

对未定义方法Illuminate \ Database \ Eloquent \ Relations \ HasMany :: makeVisible()的调用

有人知道如何同时使用这两种方法吗?

php laravel lumen
1个回答
0
投票
$value=User::find($id)->posts->each(function ($post, $key))
{
$post->makeVisible(['hiddenAttribute',...])
}

return response()->json($value, 200);
© www.soinside.com 2019 - 2024. All rights reserved.