Laravel 不显示 Eloquent 中的关联模型

环境(Environment)

  • Laravel 5.8

正文(What Should We Do)

  • 在使用 Laravel 的模型时,我们往往会添加一些关联模型在里边,如

namespace App\Models\Member; use Illuminate\Database\Eloquent\Model; class Member extends Model { public function roles() { return $this -> hasMany('App\Models\Role', 'member_id', 'id'); } }
  • 当我们查找一个用户的数据时,拿到的模型会包含关联模型的数据,但是有时候我们并不希望这些数据返回给前端(就像上面的例子,可能我们并不需要前端知道这个用户有什么权限)。这个时候我们可以将这个关联模型对应的方法名填入到该模型的 $hidden 属性中,那样返回的模型就不会带有关联模型的数据了。上面的例子添加后就是这个样子:
namespace App\Model\Member;

use Illuminate\Database\Eloquent\Model;

class Member extends Model
{
    // hidden 属性是一个数组
    protected hidden = ['roles'];

    public function roles()
    {
        returnthis -> hasMany('App\Models\Role', 'member_id', 'id');
    }
}
点赞

发表评论

您的电子邮箱地址不会被公开。 必填项已用*标注