gpt4 book ai didi

Laravel Eloquent 地在访问器中使用范围

转载 作者:行者123 更新时间:2023-12-02 10:52:32 27 4
gpt4 key购买 nike

我尝试创建一个 Eloquent 访问器,它取决于几个条件:

public function getStatusTypeAttribute()
{
if($this->new) {
return 'NEW';
}

if( ! $this->new && $this->active && $this->customer_choose) {
return 'PLANNED';
}

if( ! $this->new && $this->active && ! $this->sent_to_customer) {
return 'ACCEPTED';
}

return 'OLD';
}

我还有一些条件,我也想单独访问它们(假设我只想要新的项目。所以我尝试添加作用域方法,例如:

public function scopeNew($query)
{
return $query->where('new', true);
}

现在我可以通过 $model->new()->get() 访问它们,但我无法让它为访问器工作:

public function getStatusTypeAttribute()
{
if($this->new()) {
return 'NEW';
}

...
}

不工作。他为每个项目提供了 NEW 的 status_type,即使 new 属性为 false

最佳答案

当您在访问器中执行 if ($this->new) 时,您实际上是在检查模型的属性是 true 还是 false ,因此在这里使用范围没有任何意义。

此外,作用域是查询的过滤器,访问器是一种使用一个对象的方法,因此无论如何您都无法执行类似的操作。如果您想重用某些代码,请使用简单的方法。

关于Laravel Eloquent 地在访问器中使用范围,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48430216/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com