
Maxim
18.12.2017
10:37:15

Ad.x ??
18.12.2017
12:59:56
ктонить в курсе, есть вменяемый способ игнорировать ошибки при вставке записей, которые должны быть уникальными?
public function addCategory(Category $category)
{
$exists = ThumbsCategories::find()
->where(['category_id' => $category->category_id, 'thumb_id' => $this->thumb_id])
->exists();
if (!$exists) {
$this->link('categories', $category);
}
}
такой кастыль щас с проверкой. many-to-many связь, в связующей таблице primary key: category_id | thumb_id (уникальные все типа)

Maxim
18.12.2017
13:14:45
я не понял вопрос

Konstantin
18.12.2017
13:14:59
Я тоже

Google

Konstantin
18.12.2017
13:15:19
Проверку на уникальность что ли надо

Maxim
18.12.2017
13:16:04
или надо убрать, а в бд есть. или нужен составной внешний ключ. я хз че там

Konstantin
18.12.2017
13:16:27
Хз

Screamie
18.12.2017
13:52:03
Коллеги, пришла тут в голову одна схема для хранения галлерей изображений. Хочу прокунсультироваться у тех кто шарит)
Допустим есть у меня туева хуча изображений, которые распределены по галереям. У этих изображений есть подписи и другая инфа еще и на разных языках. Каждое изображение я хочу хранить в БД. С примерно таким набором полей:
id, path, alt, title, intro, description
Но из-за мультиязычности это дело нужно разбить на три таблицы (или больше в зависимости от кол-ва языков).
И вот тут меня плющит прожорливость запроса в БД в момент вызова галереи. Дернуть страницу -> join галереи -> join изображения -> join языковой версии контента и так для каждой галереи коих на странице может быть много.
Если например у галереи сделать поле tpl куда записывать уже свормированный HTML код галлереи и отдавать ее всю одним полем это норм?

Maxim
18.12.2017
13:57:02


Ad.x ??
18.12.2017
13:57:18
я не понял вопрос
карочи в связующей таблице составной праймори ключ category_id | thumb_id.
Он уникальный сам по себе. Т.е. нельзя вставить две одинаковые записи. типа 10 | 15 два раза. Но иногда нужно вставить туда весь набор категорий определенной тумбы, в том числе которые уже есть. Т.е. получится что будет вставляться дубль. и тогда вылетает исключение мол такая херь не прокатит запись уже есть. Приходится сначала проверять есть ли запись, и потом уже вставлять.

SiZE
18.12.2017
13:57:42

Ad.x ??
18.12.2017
13:57:42
вот короче хз мож глушить эту хуйню как-та можна я хз )

SiZE
18.12.2017
13:58:36
А по поводу этого вопроса
Если например у галереи сделать поле tpl куда записывать уже свормированный HTML код галлереи и отдавать ее всю одним полем это норм?
это называет кеширование и никакого отношения к галерее не имеет
http://www.yiiframework.com/doc-2.0/yii-filters-pagecache.html

Screamie
18.12.2017
13:58:52

Maxim
18.12.2017
14:00:33

Ad.x ??
18.12.2017
14:01:47
убирать ключ тоже не вариант. индекс же

Google

Maxim
18.12.2017
14:02:01

Screamie
18.12.2017
14:04:44

Ad.x ??
18.12.2017
14:04:45
угараешь чтоль ) конечно обязательно. расчет на 60млн тумб

Screamie
18.12.2017
14:05:18
Вообще, если собирать поля с 5 - 6 таблиц по 4 - 5 раз на страницу это сильно плохо? И надо ли это лечить? Или кэш это и есть решение проблемы?

Maxim
18.12.2017
14:07:52

Ad.x ??
18.12.2017
14:08:18
ясно. связь "многие ко многим" тебе ни о чем не говорит ))

Maxim
18.12.2017
14:08:41
впервые слышу. ты че-т выдумал

Ad.x ??
18.12.2017
14:09:17
https://en.wikipedia.org/wiki/Many-to-many_(data_model)

Screamie
18.12.2017
14:11:50
Эм, many-to-many это мне? Не понял просто. Так-то в курсе) Я справишию про 5 -6 запросов, которые и используют связь, что бы собрать все поля

Antony
18.12.2017
14:13:03
Если запросы простые - то не накладно.

Maxim
18.12.2017
14:13:19

Screamie
18.12.2017
14:13:40
Во, пошел конструктив)

Maxim
18.12.2017
14:14:09

Screamie
18.12.2017
14:14:10
Короче, я так понял идея с HTML отстой. Делаем по старинке
Не картинки. Путь к ним и мету всякую. Тянем их потом через behavior

Алексей
18.12.2017
14:15:21
А нафиг хранить путь, почему не генерить?

Screamie
18.12.2017
14:15:51
Сорян, не так выразился. Не путь. Имя файла кароч. Генерим путь и тащим мету как раз через behavior
Вопрос просто в другом. Этой меты дофига

Google

Screamie
18.12.2017
14:16:30
Как ее лучше хранить. Я об этом спрашивал

Maxim
18.12.2017
14:18:59
many-to-many наверное же

Screamie
18.12.2017
14:20:31
Вот. Сферический конь в вакууме. Есть одна галерея. В ней 5000 имаг. У каждой имаги 9 - 10 полей с инфой. Плюсом четыре языковые версии этой инфы. Способа лучше чем делать одну общую таблицу и герез foreigh keys четыре языковые таблицы нет?

Сергей
18.12.2017
14:28:24
Посоветуйте CSS инлайнер на PHP. Нужно подобное делать: https://templates.mailchimp.com/resources/inline-css/

SiZE
18.12.2017
14:38:06
+ cache
Вообще это тупо рассчитывать коня в вакууме

Screamie
18.12.2017
14:39:18
nosql
Думаю в эту сторону. Но к nosql пока не готов. надеялся, что есть какое-то другое решение.

SiZE
18.12.2017
14:39:24
С конем надо работать по факту
Нормализации бд и индексов на первых порах достаточно

Ad.x ??
18.12.2017
14:40:16

SiZE
18.12.2017
14:40:25

Ad.x ??
18.12.2017
14:40:29
1 ко многим тут связь

SiZE
18.12.2017
14:40:40
Все думают, что на их проекте завтра int закончится

Ad.x ??
18.12.2017
14:41:05
тем более что он unsigned
да, когданить кончится )

Trofim
18.12.2017
14:41:18

Ad.x ??
18.12.2017
14:41:35
вот проблема 38 года... это да
но до нее еще 20 лет

Screamie
18.12.2017
14:41:41
Знаю. И технологию знаю и реализовывал ее не раз. Просто лично мне это кажется прожорливой тратой ресурсов. Вот и подумал может есть какие-то способы лучше.

Google

Ad.x ??
18.12.2017
14:42:32
языки тока не 4 таблицы нада, а в одну

Screamie
18.12.2017
14:42:55
Как раз время появилось. Читаю форумы ищу решения, но везде примерно одно и тоже. Либо nosql либо пиши связи и нормализуй

Trofim
18.12.2017
14:43:11
Та при такой избыточности одной ок

Admin
ERROR: S client not available

Ad.x ??
18.12.2017
14:43:28

Trofim
18.12.2017
14:43:34
Смотри, может ли быть вариант что тебе нужно два языка сразу?

SiZE
18.12.2017
14:43:35

Trofim
18.12.2017
14:44:03
4 таблицы как минимум с одним избыточным полем - название файле

Ad.x ??
18.12.2017
14:44:13
ид сообщения | ид языка | сообщение

Trofim
18.12.2017
14:44:19
А-то и двумя - бо ещё нужно ж хранить айди по которому связка

Ad.x ??
18.12.2017
14:44:22
и не нада распаляться на 100500 таблиц

Trofim
18.12.2017
14:44:30
Лучше 1 таблица
Базарю
Две причины почему описал выше

Михаил
18.12.2017
14:44:45

Screamie
18.12.2017
14:44:53
Базарю
А теперь представь, что тебе нужно довать еще один язык

Google

Screamie
18.12.2017
14:45:01
добавить
И понеслась

Trofim
18.12.2017
14:45:16
Тю, и шо
Добавил колонку / две
Чем трабл?)

?
18.12.2017
14:45:39
а если языков будет не 5 а скажем 10-15
а если больше ?

Ad.x ??
18.12.2017
14:45:58

Trofim
18.12.2017
14:46:02
А если 4 все таки?)))

Screamie
18.12.2017
14:46:18
Колонку добавил? Добавь на legacy проекте колонку. покрашится все

Trofim
18.12.2017
14:46:22
У вас "а если" слишком глобальные

Никита
18.12.2017
14:46:23
языки можно в json держать (у postgresql есть удобный тип данных jsonb)

Trofim
18.12.2017
14:46:28
Если языков 150 тогда да

Screamie
18.12.2017
14:46:57

?
18.12.2017
14:47:00
заказчики народ типа обезъяна с гранатой
сейчас 4 потом блин а теперь мы еще идиш хотим
китайский японский
да и наврное еще с 10 языков добавить
а мы можем это сами сделать ?

Ad.x ??
18.12.2017
14:47:06

Screamie
18.12.2017
14:47:19