假设我有一个$profile
变量,如下所示:
$profile = request()->user()->profile;
稍后,我想通过使用load()
方法加载它所具有的一些关系,该方法可以使用以下命令执行:
$profile->load('foo', 'bar', 'bar.logs');
我知道上面的事情,但是,我碰巧在Profile
模型中有一个作用域,它的内容与上面的代码相同,如下所示:
class Profile extends Model
{
// ....
public function scopeWithFooBar($query)
{
return $query->with('foo', 'bar', 'bar.logs');
}
}
现在,我的问题是,我是否可以使用withFooBar
scope方法将关系加载到$profile
变量中,这样我就不必两次编写相同的内容了?
请注意,我知道如何使用作用域方法。但请分享你的想法。谢谢你!
1条答案
按热度按时间s3fp2yjn1#
是的,你可以使用
withFooBar
scope方法来加载$profile变量的关系,而不是使用load()
方法。下面是一个例子来说明你是如何做到这一点的:这将在
Profile
模型上执行withFooBar
scope方法,并返回查询的第一个结果,该结果将加载关系foo
、bar
和bar.logs
,就像您使用load()
方法一样。