从条件为laravel 5.7的模型获取数据

时间:2018-10-24 07:24:59

标签: php laravel model

我的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()时模型都将返回数据。

谢谢!

2 个答案:

答案 0 :(得分:1)

您可以使用query scopes来实现。查询范围使您可以向模型添加全局约束。

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

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

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

答案 1 :(得分:1)

通过在模型中使用scope来尝试此操作    

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 scopeGetGroupData($query,$value,$opertor = '>')
        {
            return $query->where('group_id', $opertor, $value);
        }

}
  

像这样在控制器中获取数据,您还可以在方法中传递参数

App\Users_group::GetGroupData($value)->get();