Laravel - 按“字段及其关系模型字段”之间的条件过滤模型

Posted

技术标签:

【中文标题】Laravel - 按“字段及其关系模型字段”之间的条件过滤模型【英文标题】:Laravel - Filtering a Model by Condition between "a Field and Its Relationship Model Field" 【发布时间】:2021-01-19 10:05:22 【问题描述】:

我有这两个模型是一对一的关系。

“产品”

身份证 姓名 最低要求

“产品数据”

身份证 product_id 价格 oh_hand

我想获取其 on_hand 小于的 product_data 计数 其相关产品的 minimum_required。

我已经尝试过子查询,但我仍然无法弄清楚。我想要的查询可能看起来像这样。

$low_products_count = ProductDetail::where('on_hand', '<', Product::select('minimum_required')->count();

【问题讨论】:

【参考方案1】:

你可以加入表格然后使用'whereColumn':

 $low_products_count =Product::join('product_data','product_data.product_id','=',
    'products.id')->whereColumn('product_data.on_hand','<','products.minimum_required')->get();

【讨论】:

【参考方案2】:

我对 eloquent 没有经验所以在这里,我与查询生成器分享我的知识。

你可以这样做->

$low_products_count=DB::table('products')
                    ->join('product_data','product_data.product_id','=',
                     'product.id')
->where('product_data.on_hand','<','products.minimum_required')->get();

你可以使用这个概念。

【讨论】:

以上是关于Laravel - 按“字段及其关系模型字段”之间的条件过滤模型的主要内容,如果未能解决你的问题,请参考以下文章

如何在 laravel 中创建 3 个模型之间的关系?

Laravel Eloquent在相关模型上按范围获取模型

在 Laravel 中创建排名表

在 Laravel 中搜索两个数字(价格)

Laravel / JQGrid - 按 laravel 动态属性排序

Laravel 5.7 按日期搜索