Mengi
как правильно написать join двух связ-ых моделей
Mengi
SELECT count(t.customer_id) as max, a.login FROM ticket as t join accounts_otrs_new as a ON a.vg_id=t.customer_id where t.create_time BETWEEN '2018-05-01' AND '2018-05-15' group by t.customer_id ORDER BY max desc $customers = Ticket::find() ->joinWith('abon') ->Where(['and', ['like', 'ticket.create_time', $day], ]); ->orderBy(['ticket.customer_id '=> SORT_ASC]);
Дмитрий
like для формата datetime это что то с чем то )
Mengi
like поменяю))
Дмитрий
Но я так и не понял в чем проблема
Mengi
туплю)) нашел ошибку) в строке с Order имя столбца с пробелом написал😅
👀
привет
Anton
Хочешь бросить вызов и оспорить лидерство?
Dmytro
Я на старичка ещё не похожу?
Dmytro
Саша тут точно есть
Anton
Да я шучу. Зачем старички?
Андрей
как отсюда получить данные unserialize('C:21:"MongoDB\\BSON\\ObjectId":48:{a:1:{s:3:"oid";s:24:"5afc28b059809e15fb3b2116";}}')
Anton
Старички здесь есть, но редко вступают в беседы
Андрей
по подробнее
ну есть переменная в таком виде, мне нужно получить отуда id (5afc28b059809e15fb3b2116 в данном случае)
Tim
кароч обнаружился еще один параметр который отвечает за подключение js скриптов. но во вьюху так скрипт валидации actionform и не попадает (
Виктор
ну есть переменная в таком виде, мне нужно получить отуда id (5afc28b059809e15fb3b2116 в данном случае)
через var_dump посмотреть, не? Объект с публичным свойством $obj->oid
Anton
ну есть переменная в таком виде, мне нужно получить отуда id (5afc28b059809e15fb3b2116 в данном случае)
Странный вопрос. Сделай var_dump(unserialize('C:21:"MongoDB\\BSON\\ObjectId":48:{a:1:{s:3:"oid";s:24:"5afc28b059809e15fb3b2116";}}')) увидишь структуру объекта. Наверное так $a = unserialize('C:21:"MongoDB\\BSON\\ObjectId":48:{a:1:{s:3:"oid";s:24:"5afc28b059809e15fb3b2116";}}'); echo $a->oid;
Vano
как отсюда получить данные unserialize('C:21:"MongoDB\\BSON\\ObjectId":48:{a:1:{s:3:"oid";s:24:"5afc28b059809e15fb3b2116";}}')
у меня нет такого класса, потому и unserialize не поможет регулярку тебе дам на всякий случай /^[a-f\d]{24}$/i
R
$a[‘oid’]
Андрей
$a[‘oid’]
тоже не ок
Screamie
Всем привет. Есть вариант цеплять два одинаковых behaviora на разные поля модели? В доке написано, что первый в приоритете. Мне нужно сохранить два изображение по одной и той же схеме, но с разными именами.
R
хоть ссылку на behavior скинь
Screamie
Самописный, что-то вроде этого https://github.com/mohorev/yii2-upload-behavior/blob/master/src/UploadBehavior.php
R
так пробовал? function behaviors() { return [ [ 'class' => UploadBehavior::class, 'attribute' => 'file', 'scenarios' => ['insert', 'update'], 'path' => '@webroot/upload/docs/{category.id}', 'url' => '@web/upload/docs/{category.id}', ], [ 'class' => UploadBehavior::class, 'attribute' => 'file2’, 'scenarios' => ['insert', 'update'], 'path' => '@webroot/upload/docs/{category.id}', 'url' => '@web/upload/docs/{category.id}', ], ]; }
Screamie
))) Конечно У моего behavior есть поле $name в котором указывается, как генерить будущее имя файла на основе полей модели. Например: {id}-{slug}
R
так речь про второй атрибут, а не про имя файла
Screamie
Для первого изображения я ставлю {id}-{slug}, для второго {id}-{slug}-crop. Но из-за того, что первый behavior перезаписывает второй имя всегда генерится через {id}-{slug}
R
у тебя в модели как поле называется?
Screamie
Одно cover, второе cover_sq.
R
я так понимаю, у тебя в итоге в обоих полях одно и то же?
Screamie
Эти поля не хранятся в базе. В behavior есть метод getUploadUrl() он берет значение поля $name резолвит его по указанной схеме и таким образом достает нужный файл. Но в этот метод всегда попадает занчение из первого behavior
Виктор
у меня нет такого класса, потому и unserialize не поможет регулярку тебе дам на всякий случай /^[a-f\d]{24}$/i
Это как бы ненормально, что класса нет. Тут вопрос то ли к кодовой базе, то ли к сервису, который формирует данные.
Screamie
return [ [ 'class' => FileUploadBehavior::class, 'attribute' => 'cover', 'path' => '@frontend/web/upload/{category.alias}/{type.alias}', 'url' => '/upload/{category.alias}/{type.alias}', 'name' => '{id}-{alias}', 'placeholder' => 'http://placehold.it/677x500' ], [ 'class' => FileUploadBehavior::class, 'attribute' => 'cover_sq', 'path' => '@frontend/web/upload/{category.alias}/{type.alias}', 'url' => '/upload/{category.alias}/{type.alias}', 'name' => '{id}-{alias}-sq', 'placeholder' => 'http://placehold.it/330x272' ], ]; Это behaviors модели
R
попробуй return [‘behavior1’ => […], ‘behavior2’ => [...]]
Screamie
Пробовал. Таже борода
R
тогда смотри код поведения
Screamie
Судя по всему придется отказаться от поведения вообще. Копаю второй час, но что-то не могу найти инфы =(
R
у тебя name случайно не статическое свойство?
Screamie
Неа
R
тогда у тебя там синглтон походу
Screamie
Нет. В том том то и дело. Модели разные. Дамп показывает, что за проход создается аж четыре экземпляра. Но значение $name всегда от первого =(
R
можешь скинуть код поведения?
R
по идее, можно вообще не задавать name, ты можешь на основе attribute в самом поведении генерить нужное имя файла
Screamie
Сейчас найду куда и скинуть и вышдю ссылку
Screamie
На основе attribute - не универсально получится.
R
попробуй простую проверку внутри поведения сделать, что-то вроде «если атрибут ковер, то нейм такой, иначе такой»
R
не универсально, но можно сделать проверку, если нейм не задан, тогда применять эту логику
R
просто интересно, будет оно работать, если в самом поведении определять нейм
Screamie
Вот ссыль на поведение. Там два класса. Для удобства здесь засунул в один файл https://implode.io/yHefLS
Screamie
Обошел проблему вызовом конкректного поведения. Но это как-то коряво. Вот так не работало: $model->getUploadUrl('cover') // отдает {id}-{ailas} $model->getUploadUrl('cover_sq') // отдает тоже {id}-{ailas} Заработало если поведению выдать имя: $model->getUploadUrl('cover') // отдает {id}-{ailas} $model->getBehavior('uploadCoverSQ')->getUploadUrl('cover_sq') // отдает {id}-{alias}-sq Но может есть решение лучше. Вопрос еще открыт
R
Можно переместить в модель эти методы
Screamie
Нет. Они срабатывают и при сохранении. Так что нет смысла делать поведение. Если в модель их тащить
R
сейчас код гляну
R
в общем, понятно, в чем проблема
R
суть поведения в том, что оно расширяет твой класс своими методами и свойствами, поэтому у тебя name и там и там одно и то же
R
можно в name класть массив
R
создай приватное свойство _name и туда складывай
R
затем в getUploadUrl дергай из этого массива по ключу
Screamie
Звучит логино. Сейчас попробую. Спасибо!
Vladislav
Народ, а можно как-то из сохранённой в базу модели User вывести пароль? Или только путём сохранения в public свойстве этой модели сохранять?
R
пароль невозможно восстановить
R
если используется стандартная генерация, конечно
Vladislav
мне просто надо вывести пароль созданного пользователя
👻
я ж уже писал что ты можешь на beforeSave повеситься и сделать че тебе надо
👻
ну и в посте он у тебя будет
R
пароль не хранится в открытом виде
R
обычно
👻
да
👻
но до момента попадания в базу его можно отловить и вывести куда надо
R
лучше опиши суть задачи
Yet Another Stats (β)
+ вот это я и хочу
Карма @pointdnd стала 17
Vladislav
чё за карма
👻
на + отреогировал