Laravel:如何在创建具有全局范围的模型实例后获取该模型实例

Laravel:如何在创建具有全局范围的模型实例后获取该模型实例,laravel,eloquent,Laravel,Eloquent,我很难获得具有全局范围的模型实例 通常,如果你写: $offer=offer::createNew(); 与 公共静态函数createNew() { 返回静态::创建([ 'user_id'=>auth()->id(), “已审阅”=>错误 ]); } 您将获得模型实例。但现在我添加了一个全局范围,无法使其工作 正如你所期望的,这个模型“几乎”是空的,因为在我的例子中,我只想得到经过审核的报价。不过,如果我补充: 公共静态函数createNew() { 返回静态::

我很难获得具有全局范围的模型实例

通常,如果你写:

$offer=offer::createNew();

公共静态函数createNew()
{
返回静态::创建([
'user_id'=>auth()->id(),
“已审阅”=>错误
]);             
}
您将获得模型实例。但现在我添加了一个全局范围,无法使其工作

正如你所期望的,这个模型“几乎”是空的,因为在我的例子中,我只想得到经过审核的报价。不过,如果我补充:

公共静态函数createNew()
{
返回静态:::withoutGlobalScopes()->create([
'user_id'=>auth()->id(),
“已审阅”=>错误
]);             
}
我从一个仅包含以下属性的有限模型中得到一个结果:

#属性:数组:5[
“用户id”=>1
“已审阅”=>错误
“更新时间:2018-09-24 11:48:27”
“创建于”=>“2018-09-24 11:48:27”
“id”=>2
]
但我的模型显然有更多的属性。如果我添加get(),我只得到

illumb\Database\elount\Collection{1635
#项目:[]
}
那么,当具有全局范围时,如何使用create获得模型呢

编辑

我的第一个解决方案如下所示:

公共静态函数createNew()
{
$model=static::create([
'user_id'=>auth()->id(),
“已审阅”=>错误
]);
返回static::withoutGlobalScopes()->find($model->id);
}
编辑2

我的环球镜看起来像这样:

类FoodScope实现范围
{
公共功能应用(Builder$Builder,Model$Model)
{
$builder->where('review',true)
->其中(‘暂停’,false);
}
}

此行为不是由全局作用域引起的

要获取其他属性时,请使用
->fresh()

公共静态函数createNew()
{
返回静态::创建([
'user_id'=>auth()->id(),
“已审阅”=>错误
])->新鲜的();
}

请发布全局范围。@JonasStaudenmeir更新了帖子:)使用
返回static::create([…])时出现了什么问题?@JonasStaudenmeir问题是我得到了一个空结果,因为当模型返回(并启动)时,全局范围被应用。因此,我想知道如何使用create并仍然获得模型实例这与全局范围无关。在没有范围的情况下尝试。您可以通过附加
->fresh()
来获取其他属性。