所有这些都是针对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]);
}]);
}