Dmitry
@kohone было же?
Dmitry
нет лол
короче определи функцию getCdate и там напиши реализацию
SiZE
Eugene
я просто хочу чтобы данные при выборке на уровне модели сразу приоретали нужный формат, типа условие в search() добавить или хз. Поэтому и спросил) Сейчас попробую функцией обойстись
w
Static.yiiframework.com рипнулся
w
По крайней мере с компа. Стили не подгружаются
Andrey Slutskiy
Или чуть более топорный вариант сделать в модели переменную public $date; и в функции afterFind присваивать ей значение на основе timestamp
Dmitry
w
С телефона у меня тоже все норм.
w
С пеки нет.
w
А все. Теперь норм
Dmitry
паникёр 😅
Дмитрий
Eugene
Eugene
Спасибо)
Сергей
Доброе утро, народ :)
Есть у меня ActiveQuery класс, в нем там функции разные для выборки. Как мне сделать UPDATE используя мой класс?
Что-то вроде:
$myActiveQuery->byCustomer($customer)->onlyActive()->update('order', ['status' => 25])->execute()
Anton
Насколько я понимаю, ActiveQuery изначльно создан, чтобы select собирать
R
@predvoditelev вроде никак, activequery для выборки
Сергей
Жалко(
Anton
в $myActiveQuery->where лежит твоё условие
Vladislav
Доброе утро/день. Как можно после переопределения save в моделе в ней вызвать родительский save()?
Сергей
Сергей
Vladislav
@predvoditelev ошибку выдаёт
Declaration of common\models\Category::save($translate = true) must be compatible with yii\db\ActiveRecordInterface::save($runValidation = true, $attributeNames = NULL)
Лёша
Сергей
Сергей
public function save($runValidation = true, $attributeNames = NULL)
Vladislav
@predvoditelev модель просто унаследываеться от ActiveRecord, а он от BaseActiveRecord в котором есть save()
Vladislav
@sofvlad я бы мог воспользоваться и beforeSave() для моей задачи, но нужно передавать дополнительный параметр в методе и проделать действия перед сохранением
Сергей
Vladislav
ну я думаю это легче всего, но как правильно назвать метод по стандарту, если он делает тоже самое что и существующий, но не хочется переопределять
Vladislav
типа _ для приватных переменных
R
Vladislav
=D
Сергей
Я использую отдельные классы-репозитории для работы с AR в БД. В таком случае такой проблемы нет:
class CustomerRepository {
public function save(Customer $customer, bool $some)
{
... действия всякие ...
if (!$customer->save()) {
throw new RuntimeException('Не удалось сохранить покупателя');
};
}
}
А если в самом AR делать, то придется самому придумывать, нет стандарта.
Максим
R
@kohone ну это если уж совсем лень
Vladislav
то чувство когда в PHP нет нормальной перегрузки)
Сергей
🎅
Лол
Vladislav
как в этом случае всё равно не поможет, ибо ты будешь переопределять родительский в любом случае
Vladislav
а так в PHP вроде нельзя создавать в одном классе методы с одинаковыми названиями, но разными параметрами
Vladislav
когда в C# такое можно
who are you
Eugene
Eugene
Сергей
тебе в gridview надо фильтровать?
Eugene
Сергей
Это тогда в searchModel делай отдельный атрибут для даты и с ним уже работай ручками и на вывод и на фильтрацию
Dmitry
А почему бы дату не хранить типом DateTime и не любить тут всем мозги?)
Если же нет, то для gridView можно рендер на поле настроить, там приводи к удобочитаемому виду.
Dmitry
Сортировка под капотом будет по int(unixtimestamp)
Dmitry
но работать будет
Сергей
Ему ж фильтрация ещё нужна
Dmitry
Andrey Slutskiy
Фильтр приводить к timestamp
Сергей
В поисковой модели на основании этого атрибута уже делать фильтрацию
Сергей
Eugene
Что в итоге лучше сделать то?)
Andrey Slutskiy
Если только для грида то однозначно фильтр привести к timestamp. А в самом гриде данные пеобразовать к нужному формату (средста вывода значения в гриде)
Сергей
http://stuff.cebe.cc/yii2docs-ru/guide-output-data-widgets.html#filtracia-dannyh
В поисковую модель добавь новое свойство, а в методе search использовать это свойство для создания нужного условия
Eugene
Спасибо большое) сейчас постараюсь реализовать ваши советы)
Vladislav
@slutskiy ну а как вызвать save родителя
Максим
parent::save();
Andrey Slutskiy
parent::save()
Vladislav
вот именно через него не катит
Vladislav
Максим
а своему save ты добавил параметры, как в ошибке сказано?
Максим
второй параметр пропустил
Vladislav
в таком случае мне нужен дополнительный параметр в самом начале а не в конце
Максим
добавляй параметр в свойство модели
Максим
и в методе save проверяй его значение
Andrey Slutskiy
в нестандартном виде вызывай save(true, null, <translate>)
Vladislav
ну блин и будет + одна лишняя строка в контроллере где я буду определять параметр для модели
Vladislav
леееень =D
Максим
это так страшно - одна лишняя строка, позволяющая реализовать нужный функционал