Php yii2 gridview过滤第二个表列上的计数/总和
我有这些相关的表格:订单、订单、产品订单id、产品id、数量、产品价格和产品。 我使用yii2网格视图来显示订单模型,以及可以用类似sql的方式计算的订单总量 按订单id从订单产品p组中选择油底壳数量*产品p价格作为总计 或者使用一个php getter和订购的产品数量,我可以使用hasmany轻松获得这些产品。 我的问题是gridview过滤器。 如何在gridview中设置这些列的搜索和排序?我找到了答案Php yii2 gridview过滤第二个表列上的计数/总和,php,gridview,filter,yii2,Php,Gridview,Filter,Yii2,我有这些相关的表格:订单、订单、产品订单id、产品id、数量、产品价格和产品。 我使用yii2网格视图来显示订单模型,以及可以用类似sql的方式计算的订单总量 按订单id从订单产品p组中选择油底壳数量*产品p价格作为总计 或者使用一个php getter和订购的产品数量,我可以使用hasmany轻松获得这些产品。 我的问题是gridview过滤器。 如何在gridview中设置这些列的搜索和排序?我找到了答案 <?php namespace common\models; use Yii
<?php
namespace common\models;
use Yii;
use yii\base\Model;
use yii\data\ActiveDataProvider;
use common\models\Order;
use common\models\OrderProduct;
class OrderSearch extends Order
{
public $total;
public $nbProd;
public $client;
/**
* @inheritdoc
*/
public function rules()
{
return [
[['total', 'nbProd', 'client'], 'safe'],
[['nbProd'], 'number'],
[['client'], 'string'],
];
}
public function search($params)
{
$query = Order::find();
$query->joinWith(['customer']);
$subQuery = OrderProduct::find()
->select('order_id, SUM(quantity*product_price) as total, count(product_id) as nbProd')
->groupBy('order_id');
$query->leftJoin(['orderSum' => $subQuery], 'orderSum.order_id = order.id');
$dataProvider = new ActiveDataProvider([
'query' => $query,
'sort'=> ['defaultOrder' => ['id'=>SORT_DESC]],
]);
$dataProvider->sort->attributes['client'] = [
'asc' => ['customer.company' => SORT_ASC],
'desc' => ['customer.company' => SORT_DESC],
];
$dataProvider->sort->attributes['nbProd'] = [
'asc' => ['orderSum.nbProd' => SORT_ASC],
'desc' => ['orderSum.nbProd' => SORT_DESC],
];
$dataProvider->sort->attributes['total'] = [
'asc' => ['orderSum.total' => SORT_ASC],
'desc' => ['orderSum.total' => SORT_DESC],
];
$this->load($params);
if (!$this->validate()) {
return $dataProvider;
}
// grid filtering conditions
$query->andFilterWhere([
'id' => $this->id,
'orderSum.total' => $this->total,
'orderSum.nbProd' => $this->nbProd,
]);
$query->andFilterWhere(['like', 'customer.name', $this->client]);
return $dataProvider;
}
}
到目前为止,您已经尝试了什么,或者详细阐述了一点。请尝试这一个,或者在中详细阐述detail@Mohan谢谢你的回答,但我已经尝试过了,它给了我一个完整性约束冲突,我无法在这里处理它是SQLSTATE[23000]:完整性约束冲突:on子句中的1052列“id”不明确正在执行的SQL为:从订单左连接选择计数在订单上连接客户。客户\u id=客户。id左连接选择订单\u id,SUMquantityproduct\u price按order\u id按order\u id按orderSum.order\u id=id列出的order\u产品组的总价可以为您提供modelSearch.php的代码。因为我已经完成了链接。哦,找到了错误,我已经更新了文件