laravel 学习(20) 模型的作用域

局部操作

查询user表里 性别男 分数 大于50

select * from user where sex = '男' and 'score' >50

//模型写法
 User::where('sex','男')->where('score','>',90)->get();

可以将男这个片段分装成单独方法,然后统一在模型下调用

首先定义模型

namespace App\Model\Source;


use Illuminate\Database\Eloquent\Model;

class User extends Model
{

    public function scopeSexMale($query){
        return $query->where('sex','男');
    }
    public function scopeSexWeman($query){
        return $query->where('sex','女');
    }
}

控制器调用

    public function list(){
        User::sexMale()->get();
    }

带参数

#模型 
public function scopeSex($query,$val){
        return $query->where('sex',$val);
    }

控制器

   User::sex('女')->get();


全局操作

sql查询必有的条件 

有两种方法

① 建立全局

namespace App\Scopes;


use Illuminate\Database\Eloquent\Builder;
use Illuminate\Database\Eloquent\Model;
use Illuminate\Database\Eloquent\Scope;

class StatusScopes implements Scope
{
    public function apply(Builder $builder, Model $model)
    {
        // TODO: Implement apply() method.
        $builder->where('status',1);
    }
}

在User模型

  //启动全局作用域
    protected static function booted()
    {
        parent::booted(); // TODO: Change the autogenerated stub
        static::addGlobalScope(new StatusScopes());
    }

控制器调用

User::get();
User::toSql(); //打印sql语句

  

②可以使用闭包方法

取消全局

 

 

 

 

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值