Задался целью
реализовать функционал индивидуальных цен в Yii2, и благодаря активной помощи сообщества удалось прийти к решению, но в нем одна проблема - в нужной ячейки ответа AR содержится null, но вот в приватном свойстве _releted содержится верный ответ.
Мы имеем запрос AR:
Service::find()
->where(['active' => 1])
->orderBy(['price' => SORT_ASC])
->joinWith('individualPrice')
->one()
Связь individualPrice:
public function getIndividualPrice()
{
return $this->hasOne(UniqueService::class, ['service_id' => 'id'])->andWhere(['user_id' => \Yii::$app->user->id]);
}
Но в ответе в поле individualPrice, как писал ранее, содержится null. А вот в $object->_related->individualPrice нужный.
Объект в результатеobject(common\models\Service)#132 (11) {
["individualPrice"]=>
NULL
["_attributes":"yii\db\BaseActiveRecord":private]=>
array(11) {
["id"]=>
int(1)
["group_service"]=>
int(1)
["name"]=>
string(12) "Some Service"
["description"]=>
string(11) "Service dec"
["price"]=>
float(0.02)
["min"]=>
int(1)
["max"]=>
int(50000)
["max_order"]=>
int(0)
["active"]=>
int(1)
}
["_oldAttributes":"yii\db\BaseActiveRecord":private]=>
array(11) {
["id"]=>
int(1)
["group_service"]=>
int(1)
["name"]=>
string(12) "Some Service"
["description"]=>
string(11) "Service dec"
["price"]=>
float(0.02)
["min"]=>
int(1)
["max"]=>
int(50000)
["max_order"]=>
int(0)
["active"]=>
int(1)
}
["_related":"yii\db\BaseActiveRecord":private]=>
array(1) {
["individualPrice"]=>
object(common\models\UniqueService)#148 (10) {
["_attributes":"yii\db\BaseActiveRecord":private]=>
array(4) {
["id"]=>
int(12)
["user_id"]=>
int(4296)
["service_id"]=>
int(1)
["price"]=>
float(1.44)
}
["_oldAttributes":"yii\db\BaseActiveRecord":private]=>
array(4) {
["id"]=>
int(12)
["user_id"]=>
int(4296)
["service_id"]=>
int(1)
["price"]=>
float(1.44)
}
["_related":"yii\db\BaseActiveRecord":private]=>
array(0) {
}
["_relationsDependencies":"yii\db\BaseActiveRecord":private]=>
array(0) {
}
["_errors":"yii\base\Model":private]=>
NULL
["_validators":"yii\base\Model":private]=>
NULL
["_scenario":"yii\base\Model":private]=>
string(7) "default"
["_events":"yii\base\Component":private]=>
array(0) {
}
["_eventWildcards":"yii\base\Component":private]=>
array(0) {
}
["_behaviors":"yii\base\Component":private]=>
array(0) {
}
}
}
["_relationsDependencies":"yii\db\BaseActiveRecord":private]=>
array(0) {
}
["_errors":"yii\base\Model":private]=>
NULL
["_validators":"yii\base\Model":private]=>
NULL
["_scenario":"yii\base\Model":private]=>
string(7) "default"
["_events":"yii\base\Component":private]=>
array(0) {
}
["_eventWildcards":"yii\base\Component":private]=>
array(0) {
}
["_behaviors":"yii\base\Component":private]=>
array(0) {
}
}
Причем при вызове с asArray() получаю нужную информацию. Как можно получить так необходимые мне данные?