ActiveRecord findBySql() - добавление атрибута, которого нет в таблице

Общие вопросы по использованию второй версии фреймворка. Если не знаете как что-то сделать и это про Yii 2, вам сюда.
Ответить
Testonder
Сообщения: 10
Зарегистрирован: 2015.06.02, 12:44

ActiveRecord findBySql() - добавление атрибута, которого нет в таблице

Сообщение Testonder »

Здравствуйте, коллеги!

Есть модель Article и таблица в MySQL под неё с полями `id`, `name`.
Теперь, через findBySql() я делаю join и вытягиваю из другой таблицы столбец, которого нет в Article. Возможно ли как-то присвоить его в качестве атрибута Article?

Заранее благодарен за помощь!
astronin
Сообщения: 606
Зарегистрирован: 2012.01.30, 17:46

Re: ActiveRecord findBySql() - добавление атрибута, которого нет в таблице

Сообщение astronin »

в атрибуты добавьте, может сработает
zelenin
Сообщения: 10596
Зарегистрирован: 2013.04.20, 11:30

Re: ActiveRecord findBySql() - добавление атрибута, которого нет в таблице

Сообщение zelenin »

Testonder писал(а):Здравствуйте, коллеги!

Есть модель Article и таблица в MySQL под неё с полями `id`, `name`.
Теперь, через findBySql() я делаю join и вытягиваю из другой таблицы столбец, которого нет в Article. Возможно ли как-то присвоить его в качестве атрибута Article?

Заранее благодарен за помощь!
может и можно, но зачем? AR не так работает.
Testonder
Сообщения: 10
Зарегистрирован: 2015.06.02, 12:44

Re: ActiveRecord findBySql() - добавление атрибута, которого нет в таблице

Сообщение Testonder »

astronin писал(а):в атрибуты добавьте, может сработает
пробовал, не сработало
Аватара пользователя
Roksalana
Сообщения: 215
Зарегистрирован: 2014.01.14, 09:34

Re: ActiveRecord findBySql() - добавление атрибута, которого нет в таблице

Сообщение Roksalana »

Testonder писал(а):
astronin писал(а):в атрибуты добавьте, может сработает
пробовал, не сработало
А как пробовали? Делала как-то такое и сработало:

Код: Выделить всё

class Article ...
{
  public $some_filed;
  
}
...
Article::findBySql('select article.*, tab2.filed as some_filed from article join left tab2');
 
Причем можно и через конструктор запросов сделать все тоже самое, не обязательно sql писать.

Код: Выделить всё

Article::find()
->select(' article.*, tab2.filed as some_filed')
->join(...)
->where(...)
->all();
 
Testonder
Сообщения: 10
Зарегистрирован: 2015.06.02, 12:44

Re: ActiveRecord findBySql() - добавление атрибута, которого нет в таблице

Сообщение Testonder »

Roksalana писал(а):
Testonder писал(а):
astronin писал(а):в атрибуты добавьте, может сработает
пробовал, не сработало
А как пробовали? Делала как-то такое и сработало:
Да, так и делал. Добавил публичное свойство с нужным именем в класс. Но значение из БД его не заполняет.
astronin
Сообщения: 606
Зарегистрирован: 2012.01.30, 17:46

Re: ActiveRecord findBySql() - добавление атрибута, которого нет в таблице

Сообщение astronin »

попробуйте без публичного метода, только в attributes
Testonder
Сообщения: 10
Зарегистрирован: 2015.06.02, 12:44

Re: ActiveRecord findBySql() - добавление атрибута, которого нет в таблице

Сообщение Testonder »

Туплю, действительно сработало объявление public атрибута в классе. Спасибо!
Как проще всего добавить свой элемент в attributes?
astronin
Сообщения: 606
Зарегистрирован: 2012.01.30, 17:46

Re: ActiveRecord findBySql() - добавление атрибута, которого нет в таблице

Сообщение astronin »

переопределить метод attributes
Ответить