Yii - 与同一模型的多重关系

Jep*_*ard 5 php mysql activerecord many-to-many yii

如何在YII每次与给定模型关联时获取相关模型,或者至少计算它发生了多少次?

问题:
我有一个订单表和一个产品表.
每个产品与订单相关联0次或更多次.

如何通过YII中的标准关系工具告诉产品在订单上的次数?
我通过联合表创建了一个多对多的关系,并用它来声明我的关系

'products'=>array(self::MANY_MANY, 'Product', 'index_order_products(order_id, product_id)')
Run Code Online (Sandbox Code Playgroud)

问题是,当我打电话给$ order-> products时,它只返回唯一的产品,而不是每次产品相关的产品.

我只需要知道订单上每件产品有多少,所以我试过了

'products'=>array(self::MANY_MANY, 'Product', 'index_order_products(order_id, product_id)', 'select'=>'*, COUNT(product_id) as count', 'group'=>'product_id')
Run Code Online (Sandbox Code Playgroud)

但是,如果我然后尝试调用$order->products[0]->count它,则表示尚未定义计数.
我设法通过在数据库中创建一个空列计数来绕过这个.这样我得到了我需要的数字,但肯定有更好的方法.

在YII中做这样的事情的正确方法是什么?

Afn*_*hir 1

正确的方法是使用 Statistical Query。正是出于这些目的。

非优雅的方式

但是,如果我尝试调用 $order->products[0]->count ,它会说 count 尚未定义。

这是因为您正在访问计算关系时未返回的对象的计数。用于CVarDumper::Dump($order->products)查看查询时得到的内容

或者另一种方式可能是count($order->products[0])