在Laravel中为某些模型查询添加特定条件

时间:2018-04-05 12:16:57

标签: laravel

我有3个实体(模型):

  • 用户

所有这三者都与地区实体(模型)有很多/很多关系。

如果用户正在搜索任何其他用户/群组/课程

Group::all();
  • 我只需要返回具有相同区域的用户/群组/课程。

实施此方法的最佳方法是什么? 我正在考虑重新定义::all()方法。

1 个答案:

答案 0 :(得分:1)

一种方法是在Region模型中创建一个函数来获取组/用户/课程:

public function getGroups()
{
    return Group::whereHas('regions', function($q) {
            $q->where('regions.id', $this->id);
        })->get();
}

您需要在Group Model中定义belongsToMany关系,如果您遵循命名约定,则类似于此:

public function regions()
{
    return $this->belongsToMany(Region::class);
}

然后,你只需要打电话:

$groups = $region->getGroups();