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"