@yii2ru

Страница 1672 из 1721
Marat
07.10.2018
06:16:51
сделал запрос через join

$team=User::find()->select('user.*')->innerJoin('user_team', 'user_team.team_user_id = user.id')->where(['user_team.user_id' =>Yii::$app->request->post('user_id')])->all();

но хотелось бы знать как можно подобное сделать через отношения ?

Сергей
07.10.2018
06:17:53
По id пользователя получить его команду?

Google
Marat
07.10.2018
06:18:46
мм да т.е. делаю запрос в user_team где вытаскиваю id`шники команды и по этим id вытаскиваю данные пользователей

Сергей
07.10.2018
06:19:31
Team user id это что за поле?

Вроде есть user_team.id

А.. понял. Тебе тут по хорошему по другому надо. User: id, name, team_id User_team: id Или три: User: id, name User_team: id User_team_user: user_id, team_id

И тогда выборки будет просто делать)

Marat
07.10.2018
06:23:09
окей сейчас подумаю спасиб за совет )

Сергей
07.10.2018
06:33:30
окей сейчас подумаю спасиб за совет )
Почитай про нормализацию БД, это как раз про это

Ad.x ??
07.10.2018
08:32:54
но хотелось бы знать как можно подобное сделать через отношения ?
почитать раздел документации про отношения

все доступно и понятно на нескольких языках даже

Andrey
07.10.2018
08:56:34
че там ту форму делать?!... )))
Ну разбирался чтобы верстка нормальная была)) надо было плюнуть и сделать тупо на jsке все и отправлять форму на контроллер и все) максимум час бы заняло) ну а так да пока разбираюсь как и что работает)

Artyom
07.10.2018
10:34:40
Вчера, как-то активно обсуждался мой вопрос про sql-запрос c группировкой. Я выкладывал вариант: SELECT DISTINCT o.id, o.created_at, o.customer_id FROM `order` o INNER JOIN ( SELECT MAX(created_at) as maxdt, customer_id FROM `order` GROUP BY customer_id ) o2 on o2.customer_id = o.customer_id AND o.created_at=o2.maxdt @sizeg тут правильно раскритиковал про использование DISTINCT, он тут бессмысленен. А то, что я хотел сделать (исключить ситуацию, когда у одного покупателя есть несколько заказов с одной датой), можно реализовать с помощью дополнительной группировки. В итоге вышло так: SELECT o.id, o.created_at, o.customer_id FROM `order` o INNER JOIN ( SELECT MAX(created_at) as maxdt, customer_id FROM `order` GROUP BY customer_id ) o2 on o2.customer_id = o.customer_id AND o.created_at = o2.maxdt GROUP BY o.customer_id @wolcharryk предлагал такой вариант: SELECT o.id, o.created_at, o.customer_id FROM `order` o INNER JOIN ( SELECT max(id) as order_id, customer_id FROM `order` GROUP BY customer_id ) o2 on o2.order_id = o.id; Этот вариант не подходит, так как есть допущение - что максимальный ID - это всегда последний заказ. И если я не ошибаюсь, то такой запрос можно просто переписать вот так: SELECT MAX(id), created_at, customer_id FROM `order GROUP BY customer_id` В конце концов пошёл по другому пути и сделал вот такой запрос: SELECT SUBSTRING_INDEX(GROUP_CONCAT(id ORDER BY created_at DESC),',',1), MAX(created_at), customer_id FROM `order` GROUP BY customer_id Суть простая. GROUP_CONCAT(id ORDER BY created_at DESC) позволяет нам получить строку, состоящую из id сгруппированных строк через запятую отсортированные по полю created_at от большего к меньшему, то есть первый id - это тот самый ID последнего заказа у данного покупателя. SUBSTRING_INDEX возвращает этот первый ID. Всем спасибо за участие :)
Привет, такой SELECT MAX(id), created_at, customer_id FROM `order GROUP BY customer_id` , думаю не прокатит, нет группировки по created_at, проверить на косячность можно таким образом SET SESSION sql_mode = CONCAT('ONLY_FULL_GROUP_BY,', (SELECT @@sql_mode));

Google
Maxim
07.10.2018
14:05:23
Вчера, как-то активно обсуждался мой вопрос про sql-запрос c группировкой. Я выкладывал вариант: SELECT DISTINCT o.id, o.created_at, o.customer_id FROM `order` o INNER JOIN ( SELECT MAX(created_at) as maxdt, customer_id FROM `order` GROUP BY customer_id ) o2 on o2.customer_id = o.customer_id AND o.created_at=o2.maxdt @sizeg тут правильно раскритиковал про использование DISTINCT, он тут бессмысленен. А то, что я хотел сделать (исключить ситуацию, когда у одного покупателя есть несколько заказов с одной датой), можно реализовать с помощью дополнительной группировки. В итоге вышло так: SELECT o.id, o.created_at, o.customer_id FROM `order` o INNER JOIN ( SELECT MAX(created_at) as maxdt, customer_id FROM `order` GROUP BY customer_id ) o2 on o2.customer_id = o.customer_id AND o.created_at = o2.maxdt GROUP BY o.customer_id @wolcharryk предлагал такой вариант: SELECT o.id, o.created_at, o.customer_id FROM `order` o INNER JOIN ( SELECT max(id) as order_id, customer_id FROM `order` GROUP BY customer_id ) o2 on o2.order_id = o.id; Этот вариант не подходит, так как есть допущение - что максимальный ID - это всегда последний заказ. И если я не ошибаюсь, то такой запрос можно просто переписать вот так: SELECT MAX(id), created_at, customer_id FROM `order GROUP BY customer_id` В конце концов пошёл по другому пути и сделал вот такой запрос: SELECT SUBSTRING_INDEX(GROUP_CONCAT(id ORDER BY created_at DESC),',',1), MAX(created_at), customer_id FROM `order` GROUP BY customer_id Суть простая. GROUP_CONCAT(id ORDER BY created_at DESC) позволяет нам получить строку, состоящую из id сгруппированных строк через запятую отсортированные по полю created_at от большего к меньшему, то есть первый id - это тот самый ID последнего заказа у данного покупателя. SUBSTRING_INDEX возвращает этот первый ID. Всем спасибо за участие :)
Distinct это плохой вариант. Он всегда проходит всю таблицу. Чем больше будет таблица тем он будет требовательней к ресурсам. оконные функции из mysql 8 это сейчас то, что тебе нужно

Mirvali
07.10.2018
15:02:43


Backendi xotel ustanovit admin panel

SiZE
07.10.2018
15:04:43
Хоспода, есть такая тема @bullhorn_bot С помощью него можно слать сообщения в телегу. Это для тех кому лень поднимать прокси на сервере или нет такой возможности. Я вобпщемто использую его для отправки логов из Й. Но вот какая фигня. Не могу добиться переносов строк. Если я руками отправляю сообщение с переносом, то все ок, если вставляю иишный лог, то вообще в сообщении перестают работать переносы. Это фишка телеги такая или этого бота или что то третье?

SiZE
07.10.2018
15:14:51
Konstantin
07.10.2018
15:15:56
Из телеги в слак чат ?

Maxim
07.10.2018
15:16:31
Всем привет. Кто-то пользуется вот этим плагином: https://github.com/nvlad/yii2support/blob/master/README.md ??? Интересует автокомплит в Yii::t

Че-то не заводится

открой бота и прозри)
Охуенная штука! Спасибо!)

Ну или другой плагин, который даст сапорт автокомплиту i18n.... Ато заманался каждый раз вспоминать как же я там назвал строку...

SiZE
07.10.2018
15:41:38
Сергей
07.10.2018
15:42:26
я пробовал \r\n => \r
Он может в html принимает? Попробуй br

Matviy
07.10.2018
17:45:37
Слушайте, а что, в MySQL оператор BETWEEN выдает ноль результатов, если значения совпадают? Ну типа: BETWEEN '35.00' AND '35.00' И все значения 35, оно бы должно было отдавать их, но отдает ноль строк

Matviy
07.10.2018
18:01:58
Ну только что порообовал

SiZE
07.10.2018
18:03:43
Вообще нет, иди дальше пробуй )

но у тебя ж строка

Google
SiZE
07.10.2018
18:04:35
или ты с числом 35 сравниваешь?

Matviy
07.10.2018
18:06:11
Хм

Не. ну там нормально все работает, если крайние значения отличаются

Все. нашел, мой затуп

SiZE
07.10.2018
18:14:29
спасибо)

Matviy
07.10.2018
18:19:33
спасибо)
Типа не за что)

Andrey
07.10.2018
18:52:41
Ребят такая штука. Нужен совет, расширение ищу. Задача состоит в следующем нужно разрешить пользователю загружать в поле одну картинку, и так же в другое поле аля галерея аля пост/статья . Как реализовать? С yii2-images от костарико там костылики или я кривой. То есть сейчас все заливает но редактирование так не разобрался. Ресайз на выходе важная штука)

PowerAxis
07.10.2018
19:10:01
Yii2 dreamteam file upload поведение юзай

Artyom
07.10.2018
19:15:13
от чего может не работать \Yii::error($errorMsg); в консольных приложениях?

т.е. оно проходит, но в логе пусто.

Dmitriy
07.10.2018
19:21:50
не разрешен error для записи?

Andrey
07.10.2018
19:24:03
Artyom
07.10.2018
19:30:07


SiZE
07.10.2018
20:11:05
Ты типа exit делаешь и ждёшь сообщение в логе?

Artyom
07.10.2018
20:11:31
Нет, я типа не понимаю чего у меня все ломается а сообщений в логе нет.

Для меня сюрпризом было, хотя, конечно тупанул, забыл совсем что оно не сразу в лог пишет.

Art
07.10.2018
20:14:48


обычный select option

Artyom
07.10.2018
20:55:48
$rateClub->in_queue = 0; $rateClub->save();

что в этих двух несчастных строчках не так?

Google
Artyom
07.10.2018
20:56:00
О_о

сеттит как false и при сохранении выдает мне ошибку валидации, что должно быть integer =\

нид хелп.

Admin
ERROR: S client not available

Artyom
07.10.2018
20:58:55
самое интересное что если в дебагере засетить то ок.

Сергей
07.10.2018
20:59:03
Там сеттер есть? Покажи ещё правила валижации

Artyom
07.10.2018
21:01:22
не, нет сеттера, только мистика, везде работает, а там нет. =\ Такая [['club_id', 'in_queue'], 'integer'] валидация.

Сергей
07.10.2018
21:03:07
Магия)

Кинь в личку весь класс, глянв

Artyom
07.10.2018
21:05:25
низя =(

в двух словах... я добавил поле в таблицу, все прописал. Везде сеттится все без проблем true/false/1/0, все ок. Выполняется демон и не проходит валидацию, потому что там false вместо нуля, пробовал просто false тоже не проходит. Интересно, что если я беру сам, во время дебага, засетчиваю, то все ок. Ровно те же строчки выполняю: $rateClub->in_queue=0; $rateClub->save(); и тариф разлочивается.

никто не сталкивался?

Такая [['club_id', 'in_queue'], 'integer'] валидация. Поле типа tinyint.

никаких сеттеров и чего-то подобного нет.

Сергей
07.10.2018
21:12:08
В демоне прям присваивается ноль или какая-то переменная?

Artyom
07.10.2018
21:12:39
прям один в один. Странно, рестартанул демон, теперь все ок.

Спасибо.

Сергей
07.10.2018
21:12:53
Ну точно магия

Artyom
07.10.2018
21:13:33
Ага мистика, ненавижу когда такое происходит, сразу думаешь что за *ерня такая.

примерно так.

Google
Ad.x ??
07.10.2018
22:20:38
Ага мистика, ненавижу когда такое происходит, сразу думаешь что за *ерня такая.
шобэ такого не происходить делай метод ->inQueue() в котором возвращается что-то типро return (bool) $this->in_queue; Либо при сравнении приводить к булеву типу: if (false === (bool) $model->in_queue) {

Сергей
08.10.2018
07:32:39
Доброе утро! Ещё немного и пробьём планку в 1к участников :)

Crestoff
08.10.2018
07:55:53
Вопрос такой, в gridview для одного из аттрибутов я получаю динамическое value, потом я расскрашиваю в красный если значение value ниже порога, но как видно из кода я заново расчитываю этот value, вопрос - как обратиться к уже расчитанному value чтобы я мог использовать его в contentOptions? 'attribute' => 'uniques', 'label' => 'Unique, %', 'format' => 'html', 'visible' => ($searchModel->group_by == LogVisit::GROUP_BY_HOURS), 'value' => function ($model, $key, $index, $column) { return round($model->uniques / max($model->raws, 1) * 100); }, 'contentOptions' => function ($model, $key, $index, $column) { return (round($model->uniques / max($model->raws, 1) * 100) < 95) ? ['class' => 'danger'] : false; },

Доброе утро

Crestoff
08.10.2018
08:06:09
спс.

Crestoff
08.10.2018
08:13:43
согласен, проще так и оставить. округление убрал. Спасибо!

Andrey
08.10.2018
08:20:57
ребят такой вопрос!) вывожу данные через listview, по дефолту надо чтобы данные не отображались и писался текст , и при заполнении формы чтобы уже отображались данные) как реализовать?





Страница 1672 из 1721