laravel的这个语句表示什么意思?

看到一篇博客,里面有这么一个语句:

public function index()
{
  $post = Post::active()->orderBy('updated_at', 'desc')->first();
  //...
}

问题:
active()表示什么意思?查了一下文档和api,都没有看到。

阅读 4.1k
4 个回答

active() 这个方法对应的是 scopeActive()

你看下scopeActive() , 里面应该是对$query加条件, 类似这样: $query->where('active', 1)

clipboard.png

这不是 laravel 自带的方法。

比如 Post 文章有个属性 是否可用的, 接下来在 post Model 中定义了个 active 方法。

//post.php
class Post extends Model
{
    public function active()
    {
        return $this->where('active', 1);
    }
}

所以这句 Post::active()->orderBy('updated_at', 'desc')->first() 相当于查询所有可用文章中,按更新时间倒序的第一个。

说多了都是文档不熟悉啊,好好看过文档就就好啦。

你看一下他的Post 模型里是不是有定义这个方法,一般是在模型里封装一层,在使用的时候更方便

在 model 的函数

class Post extends Model{
    public static function active(){
        // xxxxx
        return $this;
    }
}
// 控制器
public function index()
{
  $post = Post::active()->orderBy('updated_at', 'desc')->first();
  //...
}
撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进