@DarkByte2015

Почему запрос возвращает пустую модель?

Делаю запрос

ArticleAuthor::find()->where(['article_id' => $id])->all();


Он возвращает мне массив с одним элементом, но все поля у него в NULL. В базе эта запись есть и поля у нее заполнены. id верный. Все проверил и продебажил уже 100500 раз. При этом вот например такой запрос выполняется нормально и возвращает непустые данные (массивом):

(new Query())->select('*')->from(ArticleAuthor::tableName())->where(['article_id' => $id])->all();


Помогите пожалуйста! Никак не могу понять в чем тут дело!

P.S. PHP 5.6, Yii2.

upd. Вот еще если надо сама моделька

/**
 * Автор статьи
 *
 * @property integer $id
 * @property integer $article_id
 * @property string $lastname
 * @property string $firstname
 * @property string $middlename
 * @property string $email
 * @property-read string $fullname
 */
class ArticleAuthor extends ActiveRecord {
    public static function tableName() {
        return '{{%article_author}}';
    }

    public function getArticle() {
        return $this->hasOne(Article::tableName(), ['id' => 'article_id']);
    }

    public function __get($name) {
        switch ($name) {
            case "fullname": return "$this->lastname $this->firstname $this->middlename";
        }
    }

    public function rules() {
        return [
            [['lastname', 'firstname', 'middlename', 'email'], 'required', 'message' => 'Это поле не может быть пустым']
        ];
    }

    public function attributeLabels() {
        return [
            'lastname' => 'Фамилия',
            'firstname' => 'Имя',
            'middlename' => 'Отчество',
            'email' => 'Электронная почта',
        ];
    }
}
  • Вопрос задан
  • 221 просмотр
Решения вопроса 1
@kamnevstas
По всей видимости проблема в магическом методе __get() .
Если нужно получить ФИО как свойство класса, это делается так.
public function getFullname() {
        return $this->lastname.' '.$this->firstname.' '.$this->middlename;
    }

Чтобы получить свойство вызываем $object->fullname, $object - это экземпляр класса ArticleAuthor
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

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

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