首页 > 解决方案 > 从条件 laravel 5.7 的模型中获取数据

问题描述

我的 Laravel 项目中有Users_group模型。

代码:

<?php

namespace App;

use Illuminate\Notifications\Notifiable;
use Illuminate\Database\Eloquent\Model;

class Users_group extends Model
{
    use Notifiable;

    protected $table = 'users_groups';
    protected $fillable = ['id', 'user_id', 'group_id', 'created_at', 'updated_at'];

    public function getGroupData()
    {
        return $this->hasOne('App\Group','id','group_id');
    }
}

当我想从这个模型中获取数据时,我使用我的自定义方法:

$data = App\Users_group ::get();

它工作得很好

我想从条件不是这样的模型中获取数据:

$data = App\Users_group::where('group_id','>',5)->get();

我需要将条件放在模型文件中,这使得模型在每次调用User_group::get()返回数据时返回模型内部的条件。

谢谢!

标签: phplaravelmodel

解决方案


您可以使用查询范围来实现此目的。查询范围允许您向模型添加全局约束。

在您的情况下,您可以将以下引导方法添加到您的模型中:

protected static function boot()
{
    parent::boot();

    static::addGlobalScope('groupOver5', function (Builder $builder) {
        $builder->where('group_id', '>', 5);
    });
}

推荐阅读