在hasMany之后的with函数不会返回在字段中没有定义的属性。

问题描述 投票:0回答:1

所有这些都是针对RESTful API的,所以 find()->joinWith 无济于事。

public function getGoodsInfo()
    {
        return $this->hasMany(Goods::class, ['id' => 'goods_id'])->via('goodsSpec')->with(['aftersales' => function($query){
            $query->andOnCondition([Aftersale::tableName() . '.order_id' => $this->id]);
        }]);
    }

上面的代码是我目前的代码,可以用,但是我的Goods类必须定义'售后'作为字段,就像

public function fields()
    {
        return ['id','merch_id', 'cate_id', 'aftersales'];
    }

问题是,'售后'属性在RESTful API中大多数时候都没有用,所以应该放在extraFields中。但如果我这样做了,getGoodsInfo就不会返回带有'售后'属性的信息,即使我使用了函数。

我尝试了下面的代码,但还是不行,选择函数只影响数据库中存在的列。

public function getGoodsInfo()
    {
        return $this->hasMany(Goods::class, ['id' => 'goods_id'])->select([Goods::tableName() . '*', 'aftersales'])->via('goodsSpec')->with(['aftersales' => function($query){
            $query->andOnCondition([Aftersale::tableName() . '.order_id' => $this->id]);
        }]);
    }
php rest yii2
1个回答
© www.soinside.com 2019 - 2024. All rights reserved.