小编Dyl*_*and的帖子

Yii2 - 在GridView中按一对多关系排序和筛选

我有3个模型:PurchaseOrders,PurchaseOrderItems和Vendors.PurchaseOrders可以将许多PurchaseOrderItem绑定到每个,并且每个PurchaseOrderItem可以有一个与之关联的Vendor.我的困境是,我不仅需要在PurchaseOrder GridView中显示供应商,还要使该列能够被过滤和排序.我已经找到了MySQL查询以获得与PurchaseOrder相关联的供应商,但我不知道将它与Yii2捆绑在一起.

查询:

SELECT pos.id, pos.notes, group_concat(distinct(vend.name) order by vend.name ASC SEPARATOR ', ' ) as vendorNames 
FROM purchase_orders as pos
JOIN purchase_order_items as PO_item 
ON pos.id = PO_item.purchase_order_id 
JOIN vendors as vend 
ON PO_item.vendor_id = vend.id group by pos.id
Run Code Online (Sandbox Code Playgroud)

PurchaseOrder型号:

class PurchaseOrders extends \yii\db\ActiveRecord
{

    public static function tableName()
    {
        return 'intra_purchase_orders';
    }

    public function getPurchaseOrderItems() {
        return $this->hasMany(PurchaseOrderItems::className(['purchase_order_id' => 'id']);
    }
}
Run Code Online (Sandbox Code Playgroud)

PurchaseOrderItems型号:

class PurchaseOrderItems extends \yii\db\ActiveRecord
{
    public function getVendor()
    {
        return $this->hasOne(Vendors::className(), ['id' => 'vendor_id']);
    } …
Run Code Online (Sandbox Code Playgroud)

php mysql yii2

4
推荐指数
1
解决办法
5290
查看次数

标签 统计

mysql ×1

php ×1

yii2 ×1