Laravel5.1 模型--查询作用域

所谓的查询作用域就是允许你自定义一个查询语句 把它封装成一个方法。


1 定义一个查询作用域

定义查询作用域就是在模型中声明一个scope开头的方法:

    public function scopeHotArticle($query)
    {
        return $query->orderBy(‘comment_count‘,‘desc‘)->first();
    }

然后可以这样使用:

    public function getIndex()
    {
        $hot = Article::hotArticle();
        dd($hot);
    }

2 动态的查询作用域

动态作用域是允许你传入参数的,根据参数来返回具体的逻辑。

    public function scopeCommentMoreThan($query, $comment)
    {
        return $query->where(‘comment_count‘,‘>‘,$comment);
    }
    public function getIndex()
    {
        $articles = Article::commentMoreThan(10)->orderBy(‘comment_count‘, ‘desc‘)->get();
        foreach ($articles as $article){
            echo $article->title . ‘    ‘ . $article->comment_count;
            echo "<br />";
        }
    }
时间: 2025-01-31 14:40:14

Laravel5.1 模型--查询作用域的相关文章

Laravel5.1 模型--查询

前两天病了..一直没写笔记,今儿个来看看Model在实际开发中的一些简单使用,首先 我们来为今天的学习做个铺垫,也当做复习了 准备工作 1.生成表 php artisan make:migration create_articles_table --create=articles <?php use Illuminate\Database\Schema\Blueprint; use Illuminate\Database\Migrations\Migration; class CreateArt

ThinkPHP5——模型查询返回的对象转换为数组

使用模型查询的返回的结果集为对象,其中里面的数据,TP5框架会自动对里面的data:protected该项进行处理. 但有时我们就想要数据,就想返回一个数组就可以了,怎么办?有两种方法可以实现: 方法一:找到TP5框架中的database.php文件,该文件中找到 resultset_type 该项,将后面的 array 改成 \think\Collection [注意大小写] // 数据集返回类型 'resultset_type' => 'array',  改为 // 数据集返回类型 'res

laravel 本地作用于 模型查询

如果我们要再多个控制器中通过模型中查询相同的条件时候,可以再模型中使用本地作用域来达到重复使用. 举个例子:以帖子为例...我要以创建时间排序,和更新时间排序,去显示. 再模型中我们可以这样做: class  Topic { // 按更新时间排序的帖子 public function scopeRecent( $query ) { return $query->orderBy( ' updated_at ' , ' desc ' ) ; } //按创建时间排序的帖子 public functio

Laravel5.1 模型--关联关系(复杂)

关联关系不只是我之前记录的一对一,一对多,多对多这些相对简单的关系,在实际开发中我们会遇到比较复杂的关系. 远程一对多 远程一对多听着比较花哨 举个栗子就很清楚了,比如用户和文章是一对多的关系,国家和用户也是一对多的关系,这样看来 用户是可以作为中间关联对象来为国家和文章间建立一对多的关系,如果还是云里雾里 就直接看代码: 我们创建一个国家表: php artisan make:migration create_countries_table --create=countries public

Laravel5.1 模型 --软删除

软删除是比较实用的一种删除手段,比如说 你有一本账 有一笔记录你觉得不对给删了 过了几天发现不应该删除,这时候软删除的目的就实现了 你可以找到已经被删除的数据进行操作 可以是还原也可以是真正的删除. 1 普通删除 在软删除之前咱先看看普通的删除方法: 1.1 直接通过主键删除 public function getDelete() { Article::destroy(1); Article::destroy([1,2,3]); } 1.2 获取model后删除 public function

Laravel5.1 模型--删除

今天我们来看看如何删除数据 delete删除模型 获取到模型,执行delete方法就好: public function destroy($id) { $article = Article::findOrFail($id); if ($article->delete()){ echo '删除成功'; }else{ echo '删除失败'; } } delete方法会返回一个bool值. destory删除模型 相比较delete而言更加简洁,只要你知道id字段就可以使用: $delete = \

搜索引擎的检索模型-查询与文档的相关度计算

1. 检索模型概述 搜索结果排序时搜索引擎最核心的部分,很大程度度上决定了搜索引擎的质量好坏及用户满意度.实际搜索结果排序的因子有很多,但最主要的两个因素是用户查询和网页内容的相关度,以及网页链接情况.这里我们主要总结网页内容和用户查询相关的内容. 判断网页内容是否与用户査询相关,这依赖于搜索引擎所来用的检索模型.检索模型是搜索引擎的理论基础,为量化相关性提供了一种数学模型,是对查询词和文档之间进行相似度计算的框架和方法.其本质就是相关度建模.如图所示,检索模型所在搜索引擎系统架构位置: 当然检

ThinkPHP5.0 模型查询操作

1.获取单个数据 //取出主键为1的数据 $user = User::get(1); echo $user->name; // 使用数组查询 $user = User::get(['name' => 'thinkphp']); // 使用闭包查询 $user = User::get(function($query){ $query->where('name', 'thinkphp'); }); echo $user->name; //实例化模型后调用查询 $user = new U

django基础知识之模型查询:

查询集表示从数据库中获取的对象集合 查询集可以含有零个.一个或多个过滤器 过滤器基于所给的参数限制查询的结果 从Sql的角度,查询集和select语句等价,过滤器像where和limit子句 接下来主要讨论如下知识点 查询集 字段查询:比较运算符,F对象,Q对象 查询集 在管理器上调用过滤器方法会返回查询集 查询集经过过滤器筛选后返回新的查询集,因此可以写成链式过滤 惰性执行:创建查询集不会带来任何数据库的访问,直到调用数据时,才会访问数据库 何时对查询集求值:迭代,序列化,与if合用 返回查询