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中做这样的事情的正确方法是什么?
正确的方法是使用 Statistical Query。正是出于这些目的。
非优雅的方式
但是,如果我尝试调用 $order->products[0]->count ,它会说 count 尚未定义。
这是因为您正在访问计算关系时未返回的对象的计数。用于CVarDumper::Dump($order->products)查看查询时得到的内容
或者另一种方式可能是count($order->products[0])
| 归档时间: |
|
| 查看次数: |
989 次 |
| 最近记录: |