framework icon indicating copy to clipboard operation
framework copied to clipboard

hasWhere 和 with 同时使用的 bug

Open Yinux opened this issue 5 years ago • 0 comments

环境:ThinkPHP 5.1.40 数据库:sql server 2008

<?php
/**
 *  货品单位.
 */

namespace app\wx\model;

class GoodsUnit extends BaseModel
{
    protected $name = 'GoodsUnit';
    protected $table = 'l_goodsunit';
    protected $pk = 'unitid';
    protected $visible = ['goodsid', 'unitid', 'unitname', 'rate', 'price', 'sequence','unittype'];

    public function goods()
    {
        return $this->belongsTo('Goods','goodsid','goodsid');
    }
}

<?php
/**
 * 货品资料.部分代码
 */

namespace app\wx\model;

use think\Db;

class Goods extends BaseModel
{
    protected $name = 'Goods';
    protected $table = 'l_goods';
    protected $pk = 'goodsid';
    protected $visible = ['goodsid', 'code', 'name', 'specs', 'gdtypeid', 'brandid', 'quantity', 'unitid', 'unitname', 'orderaddqty', 'minpurchaseqty','affixinfoid','closed'];
  
}

复现过程: 有两个表,一个货品资料Goods,一个货品单位GoodsUnit,一个货品对应多个货品单位,在货品单位中定义belongsTo, 货品资料中 设置 visible 属性。 控制器中:

$data=GoodsUnit::hasWhere('goods',[['closed','=',1]])->with(['goods'])->all();
return $data;

返回的结果是:

[
    {
        "goodsid": "68",
        "unitid": "153",
        "unittype": "0",
        "sequence": "1",
        "unitname": "套",
        "rate": "1.00000000",
        "goods": {
            "goodsid": "68",
            "code": "1000",
            "name": "速达",
            "specs": null,
            "gdtypeid": "1",
            "unitid": "153",
            "quantity": ".00000000",
            "orderaddqty": "1.00000000",
            "minpurchaseqty": "1.00000000",
            "closed": "1",
            "affixinfoid": null,
            "brandid": null,
            "def": {
                "批准文号": null,
                "货品自定义2": null,
                "货品自定义3": null,
                "货品自定义4": null,
                "货品自定义5": null,
                "货品自定义6": null,
                "货品自定义7": null,
                "货品自定义8": null,
                "货品自定义9": null,
                "货品自定义10": null
            }
        }
    },
    {
        "goodsid": "68",
        "unitid": "154",
        "unittype": "1",
        "sequence": "0",
        "unitname": null,
        "rate": ".00000000",
        "goods": {
            "goodsid": "68",
            "code": "1000",
            "name": "速达",
            "enname": null,
            "shortname": null,
            "specs": null,
            "enspecs": null,
            "gdtypeid": "1",
            "unitid": "153",
            "gcmid": "1",
            "storeid": null,
            "placeid": null,
            "barcode": null,
            "weightcode": null,
            "kind": "1",
            "aprice": ".00000000",
            "quantity": ".00000000",
            "realqty": ".00000000",
            "extqty": ".00000000",
            "realextqty": ".00000000",
            "costtype": "3",
            "validdates": null,
            "highprice": ".00000000",
            "lowprice": ".00000000",
            "pprice": ".00000000",
            "sprice": ".00000000",
            "vipprice": ".00000000",
            "lprice1": ".00000000",
            "lprice2": ".00000000",
            "lprice3": ".00000000",
            "lprice4": ".00000000",
            "lprice5": ".00000000",
            "cancmb": "0",
            "guserdef1": null,
            "guserdef2": null,
            "guserdef3": null,
            "guserdef4": null,
            "guserdef5": null,
            "guserdef6": null,
            "guserdef7": null,
            "guserdef8": null,
            "guserdef9": null,
            "guserdef10": null,
            "posyear": "2014",
            "posmonth": "1",
            "status": "0",
            "orderaddqty": "1.00000000",
            "ismrp": "1",
            "leadtime": "1",
            "traderid": null,
            "minpurchaseqty": "1.00000000",
            "counterid": null,
            "speedsymbol": null,
            "closed": "1",
            "upflag": "0",
            "comminfoid": "191",
            "affixinfoid": null,
            "isbatch": "0",
            "workshopid": null,
            "empid": null,
            "hsid": null,
            "hsrate": null,
            "countryid": null,
            "goodswardid": null,
            "pointrate": "1.00000000",
            "changepoint": ".00000000",
            "IsVipPrice": "1",
            "ismobile": "0",
            "dsgoods": "0",
            "dscorpid": null,
            "dsgoodscode": null,
            "brandid": null,
            "storelist": null,
            "rate": null,
            "ROW_NUMBER": "1",
            "def": {
                "批准文号": null,
                "货品自定义2": null,
                "货品自定义3": null,
                "货品自定义4": null,
                "货品自定义5": null,
                "货品自定义6": null,
                "货品自定义7": null,
                "货品自定义8": null,
                "货品自定义9": null,
                "货品自定义10": null
            }
        }
    }
]

第一个GoodsUit中, Goods 是按visible 属性显示的,第二个 GoodsUnit 中,Goods 显示的是所有的字段,没有处理 visible 属性。

Yinux avatar Oct 30 '20 02:10 Yinux