leftJoin('goods_image gi','gd.goods_id=gi.goods_id') ->leftJoin('goods_sku gs','gd.goods_id=gs.goods_id') ->leftJoin('upload_file uf','gi.image_id=uf.file_id') ->where('gd.goods_id',$data['goods_id']) ->field('gd.goods_name,gd.goods_no,gd.goods_price_min,gd.status,gi.image_id,uf.domain,uf.file_path,gs.goods_props')->find(); $res->goods_props_obj = $res->goods_props?json_decode($res->goods_props):null; $res->goods_image = $res->domain.'/'.$res->file_path; return $res; //return Goods::alias('gd')->leftJoin('goods_images')->where('goods_id',$data['goods_id'])->field('goods_name,goods_no,')->find(); } public function getResidueStockAttr($value,$data){ if(isset($data['limit_stock']) && isset($data['purchase_stock'])){ $residue_stock = $data['limit_stock']-$data['purchase_stock']; return $residue_stock>0?$residue_stock:0; } return 0; } public function add($coupon_activity_id, $is_expect,$data) { // 先删除全部 static::deleteAll(['full_send_activity_id' => $coupon_activity_id]); if (!empty($data)) { $dataset = []; foreach ($data as $item) { $dataset[] = [ 'full_send_activity_id'=>$coupon_activity_id, 'goods_id' => $item['goods_id'], 'limit_stock' => $item['limit_stock'], 'is_expect' => $is_expect, ]; } (new static)->addAll($dataset); } } }