Laravel 模型函数最佳价格

Posted

技术标签:

【中文标题】Laravel 模型函数最佳价格【英文标题】:Laravel model function best prickets 【发布时间】:2021-03-25 23:14:03 【问题描述】:

我是 Laravel 的新手,我有一个问题如下 我在类别模型查询中检查类别是否存在 如下

 public function scopeIsExist($query ,$id)
    
        return $query->where(['deleted' => 1, 'id' => $id])->orderBy('id', 'DESC')->first();
    

我的控制器是

    public function edit($id)
    


        $dataView['category'] = Category::IsExist($id);    

        if(!$dataView['category'])
        
            return view('layouts.error');
        else
            $dataView['title'] = 'name';
            $dataView['allCategories'] = Category::Allcategories()->get();
            return  view('dashboard.category.edit')->with($dataView);
        

    

我的问题是当我使用方法 isEXIST 时,如果 id 没有找到它不会重定向到错误页面,但是我删除 ISEXIST 并替换它如下

$dataView['category'] = Category::where(['deleted' => 1, 'id' => $id])->orderBy('id', 'DESC')->first();

它运作良好。 谁能帮帮我

【问题讨论】:

【参考方案1】:

这是因为本地作用域应该返回一个\Illuminate\Database\Eloquent\Builder 的实例。您应该删除范围内的first() 并将其放入控制器中。 像这样重新定义您的范围:

public function scopeIsExist($query ,$id)
    
        return $query->where(['deleted' => 1, 'id' => $id])->orderBy('id', 'DESC');
     

在您的控制器编辑方法中:

    $dataView['category'] = Category::IsExist($id)->first();    

您可以查看文档以了解本地范围 https://laravel.com/docs/8.x/eloquent#local-scopes

【讨论】:

以上是关于Laravel 模型函数最佳价格的主要内容,如果未能解决你的问题,请参考以下文章

Laravel如何在Eloquent模型中添加自定义函数?

Laravel 5 检索所有多态模型的最佳方法

检查模型是不是在laravel中返回结果的最佳方法[重复]

我的模型Laravel如何能够在hasMany中返回每个项目的所有价格?

Laravel 4 中相关模型验证的最佳实践?

在 Laravel 中,直接从视图向模型或控制器请求一些数据的最佳方式是啥?