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