我正在使用lumen开发REST API。我使用了这两个模型User
和Post
。在我的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()的调用
有人知道如何同时使用这两种方法吗?
$value=User::find($id)->posts->each(function ($post, $key))
{
$post->makeVisible(['hiddenAttribute',...])
}
return response()->json($value, 200);