@maksim_fix
Junior PHP developer

Почему при получении записи ActiveRecord поля с данными приватные?

Всем доброго времени суток. Такая проблема: пытаюсь получить данные записи из БД. Вот запрос:
$model = Model::findOne($id);

Запись находит, она существует, данные в БД есть, НО, когда я пытаюсь получить какие-либо свойства, то получаю NULL. Вот var_dump модели:
object(common\models\EventSetting)#137 (14) { ["main_image"]=> NULL ["cert_image"]=> NULL ["date_1"]=> NULL ["date_2"]=> NULL ["_attributes":"yii\db\BaseActiveRecord":private]=> array(8) { ["id"]=> int(1) ["event_id"]=> int(149) ["main_image"]=> NULL ["cert_image"]=> NULL ["date_1"]=> string(10) "2020-11-11" ["date_2"]=> string(10) "2020-11-11" ["created_at"]=> int(111) ["updated_at"]=> int(1112) } ["_oldAttributes":"yii\db\BaseActiveRecord":private]=> array(8) { ["id"]=> int(1) ["event_id"]=> int(149) ["main_image"]=> NULL ["cert_image"]=> NULL ["date_1"]=> string(10) "2020-11-11" ["date_2"]=> string(10) "2020-11-11" ["created_at"]=> int(111) ["updated_at"]=> int(1112) } ["_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) { } }


Видно, что поля содержат значение NULL, но потом в ["_attributes":"yii\db\BaseActiveRecord":private] содержатся эти данные.

Если же получить данные с помощью $query->asArray()->one() - то все данные присутствуют, но такой подход мне не подходит, мне нужно получить именно модель

Вот код модели(валидацию максимально упростил, но это не помогло, как бы я ее не менял - данные недоступны):
<?php


namespace common\models;

use yii\db\ActiveRecord;


class EventSetting extends ActiveRecord
{
    public $main_image;
    public $cert_image;
    public $date_1;
    public $date_2;

    public function rules()
    {
        return [
            [['event_id', 'date_1', 'date_2', 'main_image', 'cert_image'], 'safe'],
        ];
    }

    /**
     * {@inheritdoc}
     */
    public static function tableName()
    {
        return 'event_setting';
    }
}
  • Вопрос задан
  • 50 просмотров
Пригласить эксперта
Ответы на вопрос 1
@maksim_fix Автор вопроса
Junior PHP developer
Нашел решение, но оно мне не нравится: удалить все поля в модели:
public $main_image;
    public $cert_image;
    public $date_1;
    public $date_2;
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы