php - Laravel hasManyThrough 对中间模型有约束

标签 php laravel

您好,我的实体之间存在以下关系。

User
  - id
  - other stuff
NeighborhoodFilter
  - id
  - userId
  - neighborhoodId
  - isActive
Neighborhood
  - id
  - other stuff

我想为我的用户对象编写一个方法,该方法将返回用户所属的所有 Neighborhoods,这些 Neighborhoods 由 NeighborhoodFilter 中的 isActive = 1 指示。

我尝试了以下方法,但我不知道将约束“isActive=1”放在哪里。有什么想法吗?

public function neighborhoods()
{
    return $this->hasManyThrough('Neighborhood', 'NeighborhoodFilter', 'userId', 'id');
}

最佳答案

如果您在 Neighborhood 和 NeighborhoodFilter 之间有关系,您可以使用 whereHas 函数。

public function neighborhoods()
{
    return $this->hasManyThrough('Neighborhood', 'NeighborhoodFilter', 'userId', 'id')->whereHas('neighborhoodFilters', function($q){
        $q->where('isActive', 1);
    });
}

否则,您可以使用 belongsToMany 关系和 wherePivot 函数。

public function neighborhoods()
{
    return $this->belongsToMany('Neighborhood', 'neighborhood_filters', 'user_id', 'neighbor_id')->wherePivot('isActive', 1);
}

关于php - Laravel hasManyThrough 对中间模型有约束,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34884370/

相关文章:

php - Laravel 4.2 在 BelongsToMany 结果上返回软删除

image - 如何使用 laravel 图像将高分辨率图像更改为低分辨率?

php - 选项从数据库获取数据

php - 用于 PHP 的 SCORM 库

javascript - 在 Javascript 中从数组运行代码的最佳和最安全的方法是什么?

php - 如何强制 Laravel 对列名使用驼峰命名法

Laravel - 获取客户端 IP 地址 - 总是得到 127.0.0.1 结果

php - 安装 SSH 模块 Pear

php - 在 jquery 函数中使用选项值作为文件名变量

laravel - 为什么在用 spatie/browsershot 生成的 pdf 文件中没有标题并且任何页面的最后一行都被切断?