微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

Laravel Eloquent 忽略受保护的 $with

如何解决Laravel Eloquent 忽略受保护的 $with

所以基本上我有模型 foo:

protected $with = ['bars'];

public function bars()
{
   return $this->morphMany(bar::class,'barable');
}

还有模型栏:

public function barable() 
{
   return $this->morphTo();
}

现在我的问题是,如果我想通过 bar 加载 foo:

Bar::find(1)->with(['barable.something.this'])->get();

我得到了 foo 表和相应的 bar。

现在因为 foo 的 bar 属性有很多条目(包括我请求 foo 的原始 bar),我想排除 barable.bars,但由于它包含在 with 属性中,所以它总是被加载。

如何从查询中排除 barable.bars?

编辑:如果重要的话,我正在使用 laravel 5.6

解决方法

尝试使用 documentation 中的 $books = Book::without('author')->get();

所以你的情况是

Bar::find(1)->with(['barable' => function ($query){ $query->without('bars'); $query->with(['something.this']) }])->get();

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。