我执行以下查询并获取PartnerFilterOption
模型的对象:
$partnerFilterOption = PartnerFilterOption::find()
->where(['=', 'ad_filter_option_id', $filterOptionId])
->andWhere(['=', 'ad_partner_filter_id', $partnerFilter['id']])
->one();
但是,如果我尝试获取模型属性,例如:
$value = $partnerFilterOption->mapping_value;
我在PhpStorm中遇到错误。
答案 0 :(得分:4)
PHPStorm不知道$partnerFilterOption
变量包含什么数据类型。您应该通过帮助PHPDoc注释将信息告知PHPStorm
/**
* @var PartnerFilterOption $partnerFilterOption
*/
$partnerFilterOption = PartnerFilterOption::find()
->where(['=', 'ad_filter_option_id', $filterOptionId])
->andWhere(['=', 'ad_partner_filter_id', $partnerFilter['id']])
->one();
P.S。您的查询可以写得更容易阅读
$partnerFilterOption = PartnerFilterOption::find()
->where([
'ad_filter_option_id' => $filterOptionId,
'ad_partner_filter_id' => $partnerFilter['id']
])->one();
答案 1 :(得分:1)
在这种情况下,您可以使用findOne()
-PhpStorm应该确定返回对象的类型:
$partnerFilterOption = PartnerFilterOption::findOne([
'ad_filter_option_id' => $filterOptionId,
'ad_partner_filter_id' => $partnerFilter['id'],
]);
对于更复杂的条件,需要使用find()
和one()
,则需要使用@MaximFedorov建议的typehint(/* @var $partnerFilterOption PartnerFilterOption */
)。