Функция with после hasMany не будет возвращать атрибут, не определенный в полях - PullRequest
0 голосов
/ 07 мая 2020

Все это для 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]);
        }]);
    }

Приведенный выше код - это мой код на данный момент, он работает, но мой класс товаров должен определять «послепродажное обслуживание» как поля , точно так же, как

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

Проблема в том, что атрибут aftersales в большинстве случаев бесполезен в RESTful API, поэтому его следует помещать в extraFields. Но если я это сделаю, getGoodsInfo не вернется с атрибутом aftersales, даже если я использовал с функцией.

Я пробовал приведенный ниже код, но все еще не работает, функция выбора влияет только на столбцы, существующие в базе данных.

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]);
        }]);
    }
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...