Алексей
Алексей
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
Старички здесь есть, но редко вступают в беседы
Anton
Андрей
по подробнее
ну есть переменная в таком виде, мне нужно получить отуда id (5afc28b059809e15fb3b2116 в данном случае)
Tim
кароч обнаружился еще один параметр который отвечает за подключение js скриптов. но во вьюху так скрипт валидации actionform и не попадает (
Виктор
Vano
Андрей
R
$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
R
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
обычно
👻
да
👻
но до момента попадания в базу его можно отловить и вывести куда надо
Vladislav
R
лучше опиши суть задачи
Vladislav
чё за карма
👻
на + отреогировал