【问题标题】:How to get products that the sellers have reduced their prices in laravel如何在laravel中获得卖家降价的产品
【发布时间】:2022-01-21 17:48:13
【问题描述】:

我有一个名为 products 的表,每次用户更新他们的产品时,都会在另一个名为 product_price_history 的表中保存一个新行。

我的桌子:

产品:

id  (primary key)
name  (varchar)
price  (decimal)

product_price_history:

id  (primary key)
product_id  (fk to products)
price  (decimal)
created_at (dateTime)

我的模特:

  • 产品

  • 产品价格历史

我在product model里面写了child table的关系如下

class Product extends Model {


  public function history()
  {
     return $this->hasMany(ProductPriceHistory::class, 'product_id', 'id');
  }


}

如何在 Laravel 中编写查询以显示价格下降的产品列表? 换句话说,显示最近降价的产品列表。

   $result = Product::whereHas('history' , function($query){

   // I do not know what to write here ...


   })->get();

【问题讨论】:

  • 对你来说“最近”是什么?

标签: php mysql laravel database laravel-8


【解决方案1】:

您创建的查询是正确的,只需添加降序过滤器

查询将是这样的:

   $result = Product::whereHas('history' , function($query){
       $query->orderBy('price', 'DESC');
   })->get();

【讨论】:

  • “排序依据”如何帮助检查是否存在任何记录的查询?
  • 我只想显示卖家降价的产品。 @samuel-lujan
  • 有两种方法。您可以获得的第一个或历史价格的第一个或最后一个插入,看看这个值是 GT 还是 LT,然后是值。或者,您可以在 products 表中添加一些字段,例如 is_promotional 和promotion_value。那么你应该按这个值搜索:)
猜你喜欢
  • 1970-01-01
  • 2019-08-04
  • 2019-05-26
  • 2019-06-11
  • 2014-02-15
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多