vcoder 2017-02-24 11:53:13 2771次浏览 3条回复 0 0 0

如果有一个 产品表 goods 还有个一个 分类表 cate 还有一个订单表 order

假定model里都写好了 hasone 这些方法。

在一个订单列表页 , $order->goods 可以获得到goods的表对象。$order->goods->cate 可以得到分类

如果goods不存在就会报异常,在订单列表的模板上显示商品分类的时候,每次还要这样写

$goods = $order->goods;
if($goods){
   $cate = $goods->cate;
   if($cate){
       echo $cate->cate_name;
   }
}
  • 回复于 2017-02-24 13:56 举报

    我想到的几个方法

    • 对产品进行逻辑删除
    • 将一个订单所属的产品分类封装成方法,直接调用,这样减少代码量
    • 做一个订单分类快照表,存订单---分类名。不走关联。
    1 条回复
    回复于 2017-02-24 14:19 回复

    第二种,封装成方法,还是要判断每次取出来的是不是对象吧,只不过是吧模板上写的,改到model了
    做项目怎么考虑数据库的完整性啊,因为少了一条记录,得不到数据对象,你在掉对象的方法,就会抛异常,这样一级的关联还好,如果关联的表也关联着另外一个表,感觉就有点不靠谱了。

    他不像联查,取出来的是数组,最多值是空的。

  • 回复于 2017-02-24 16:01 举报

    用ArrayHelper
    $cate=ArrayHelper::getValue($order,'goods.cate','');

  • 回复于 2017-02-24 16:03 举报

    ActiveRecord是支持对象和数组两种写法的,可以使用ArrayHelper。

您需要登录后才可以回复。登录 | 立即注册