【发布时间】:2022-01-10 02:16:01
【问题描述】:
我的模型类别中有一个方法 scoup scopeCalculateMaxPositionSelectedCategory
class Category extends Model
{
use HasFactory;
protected $fillable = [
'parent_id',
'name',
'slug',
'description',
'position',
'quantity_available_offers',
];
public function scopeCalculateMaxPositionSelectedCategory($query, $cat_id = null) {
return $query->where('parent_id', $cat_id)->max('position');
}
}
当我这样打电话时,它工作正常:
Category::CalculateMaxPositionSelectedCategory();
但我想这样做:
$this->categories->CalculateMaxPositionSelectedCategory();
在此之后是错误: “坏方法调用异常 方法 Illuminate\Database\Eloquent\Collection::CalculateMaxPositionSelectedCategory 不存在。 "
告诉我为什么要这样做,因为我想在组件 Livewire 中使用它:
public $selCategory = '';
public $categories;
public $selPosition;
public function render()
{
$this->categories = Category::all();
$this->selPosition = $this->categories->CalculateMaxPositionSelectedCategory() + 1;
return view('livewire.form-stor-category');
}
假设错误是由于all()调用get()造成的。但我不知道如何解决它。
【问题讨论】:
-
如果
all()有问题,您可以随时使用query()
标签: laravel laravel-livewire livewires