【问题标题】:Laravel get collection of models where all relations has status = 2Laravel 获取所有关系状态 = 2 的模型集合
【发布时间】:2021-06-11 21:12:00
【问题描述】:

我有一个具有子类别关系的类别模型。我需要获取所有子类别都处于活动状态的所有类别。 请帮我形成一个查询

我做到了

$query->whereHas('subcategory', function($query) {
            query->where('subcategory.status', '=', 'passed');
        });

但此查询返回的类别中至少有一个子类别处于活动状态,但我需要所有子类别都搁浅,状态为活动

【问题讨论】:

  • 发布你的模型我们可以检查关系
  • public function subcategory() { return $this->hasMany(CategorySubcategory::class, 'category_id'); }

标签: php mysql laravel orm


【解决方案1】:

我相信您可以通过比较传递的子查询数与总数的子查询来做到这一点。必须采用命名约定,但您可以对其进行调整以适合您的表格。

$totalSubCategories = SubCategory::selectRaw('Count(subcategories.id) as totalc')
    ->whereColumn('categories.id', 'subcategories.parent_id');

$totalPassedSubCategories = SubCategory::selectRaw('Count(subcategories.id) as totalpassed')
    ->whereColumn('categories.id', 'subcategories.parent_id')
    ->where('status', 'passed');

Category::where($totalSubCategories, $totalPassedSubCategories)->get();

【讨论】:

  • 这是非常原始的,只是为了给你一个想法,看看你是否可以让它工作,否则我必须启动一个项目并测试查询:) 另外我不确定子查询如何以及在哪里交互,测试一下,让我们一起弄清楚。
  • 谢谢,我会尝试,如果这是我问题的答案,那么我会将其标记为答案)
猜你喜欢
  • 1970-01-01
  • 2015-06-12
  • 2019-06-17
  • 1970-01-01
  • 2017-06-03
  • 1970-01-01
  • 2016-07-10
  • 2020-06-02
  • 2017-10-10
相关资源
最近更新 更多