Php yii通过发行激活记录

Php yii通过发行激活记录,php,activerecord,yii,yii2,Php,Activerecord,Yii,Yii2,请帮忙 我有模型: class Service extends \yii\db\ActiveRecord{ public function getCategory() { return $this->hasOne(ServiceCategory::className(), ['id' => 'service_category_id']); } } class ServiceOffer extends \yii\db\ActiveRecord

请帮忙

我有模型:

class Service extends \yii\db\ActiveRecord{
    public function getCategory()
    {
        return $this->hasOne(ServiceCategory::className(), ['id' => 'service_category_id']);
    }
}

class ServiceOffer extends \yii\db\ActiveRecord
{
    public function getService()
    {
        return $this->hasOne(Service::className(), ['id' => 'service_id']);
    }

    public function getCategory()
    {
        return $this->hasOne(ServiceCategory::className(), ['id' => 'service_category_id'])->via('service');
    }

    public function getProperties()
    {
        return $this->hasMany(ServiceProperty::className(), ['service_category_id' => 'id'])
                    ->via('category');
    }
}
当我询问时:

$query = ServiceOffer::find()->with(['properties'])->all();
或:

我有一个错误:

Getting unknown property: app\models\ServiceOffer::service_category_id
但如果我为see查询sql执行此操作:

$query = ServiceOffer::find()->joinWith(['properties']);
echo $query->prepare(\Yii::$app->db->queryBuilder)->createCommand()->rawSql;
sql:

无问题查询并执行


为什么ActiveRecord在ServiceOffer模型中查找service\u category\u id属性?

似乎Yii中有一个bug。这与此非常相似:似乎Yii中有一个bug。与此非常相似:
$query = ServiceOffer::find()->joinWith(['properties']);
echo $query->prepare(\Yii::$app->db->queryBuilder)->createCommand()->rawSql;
SELECT "service_offer".* FROM "service_offer" 
LEFT JOIN "service" ON "service_offer"."service_id" = "service"."id" 
LEFT JOIN "service_category" ON "service"."service_category_id" = "service_category"."id" 
LEFT JOIN "service_property" ON "service_category"."id" = "service_property"."service_category_id"