【发布时间】:2016-08-15 13:46:34
【问题描述】:
我碰巧有:销售模式有:id, product_id, qty, s_price;产品型号:id, category_id, name;具有的类别模型:id, name
目前我可以成功进行此查询:
$sales = Sale::orderBy('created_at', 'DESC')
->whereBetween('created_at', [$startDate, $endDate])
->whereBetween('qty', [$lQty, $uQty])
->paginate(11);
我知道 category_id 并且想只过滤掉属于特定类别的产品的销售。比如:
$sales = Sale::orderBy('created_at', 'DESC')
->whereBetween('created_at', [$startDate, $endDate])
->whereBetween('qty', [$lQty, $uQty])
->where('category_id', '=', 5)
->paginate(11);
【问题讨论】:
-
那么...问题是什么?您是否遇到某种错误?你得到什么结果/你期望什么结果?
-
我收到此错误 Column not found: 1054 Unknown column 'category_id' in 'where clause' (SQL: select count(*) as aggregate from
saleswherecreated_atbetween 2016-08- 15 和 2016-08-16 和qty介于 0 和 100000 之间和category_id= 5) -
我明确定义了产品和销售之间的关系
-
所以您的
sales表没有category_id列。没有什么令人困惑的。您必须通过left joining 任何所需的表从现有表构造查询,直到您可以查询category_id列。 -
如果您尝试查询特定列,您仍然需要进行连接。如果您想根据 ID 从关系中返回记录的子集,可以使用
->with(["relationship", => function($query){ $query->where("id", "=", 5); }]);