Size: a a a

2021 September 20

AH

Alexey Hash in Laravel Pro
/Всем привет, может кто помочь, нужно сделать такую логику что если мы вводим +8(222)-222-22-22 то по этому номеру ищется в бд запись, но если мы введем к примеру +8 222 222 22 22, то тоже искалось или к примеру ещё просто 222 222 22( то есть разные вариации номера телефона)
источник

AB

Alex B in Laravel Pro
поисковые движки?
источник

M

Maxx in Laravel Pro
у меня обычно переводимые поля все JSONB с ключами под локали {"en":"Hi", "ru":"Привет", "es":"Hola"},
в базе определена функция i18n(field JSONB, locales TEXT[]), которая, из набора локалей во втором параметре по мере наличия переводов возвращает первый существующий.
соотетственно, ORDER BY делаются по этой функции (на больших объёмах, 100К+, можно индексировать по функции, на малых вщ незаметно).
мне такая практика до сих пор (2+ лет, несколько больших проектов) кажется самой успешной
источник

AH

Alexey Hash in Laravel Pro
Мне на чистом надо сделать
источник

D

Denis Antonov in Laravel Pro
Хранишь в БД номер без пробелов/дефисов/других символов - только цифры

ищешь в базе через "select * from table where phone like '%{$phone}%'"
источник

AH

Alexey Hash in Laravel Pro
А у меня в бд уже храниться в таком формате 8(222)-22-22-22(тама уже система долго пишется)
источник

AB

Alex B in Laravel Pro
https://twitter.com/cerbero90/status/1439502268798099458

Как прекрасен ларавель 🤯
источник

Э

Элин in Laravel Pro
Интересная реализация. Спасибо!

А как тебе такая реализация?

translateable_id
translateable_type
translation_key
data: json

Конечно же, перечисленные поля для примера, а data выглядит примерно так:

{ name: “Dmitry Peskov”, quote: “Don’t rock the boat” }

То есть, нужный нам перевод для сущности достаём через полиморфную связь, а нужный язык по translation_key
источник

M

Maxx in Laravel Pro
а) нужного перевода может не быть. тогда необходимо выдать fallback, что переусложнит запросы к БД.
б) у меня основные запросы по пять экранов занимают иногда, добавлять туда ещё кучу джойнов из-за интернационализации — такое себе =)
источник

Э

Элин in Laravel Pro
А, ну, да, согласен)

Получается, что у сущностей изначально есть основной перевод. Нужно будет джойнить несколько раз, чтобы узнать, существует ли перевод, если есть то достать его. Вроде не хитро, но базу бомбят)
источник

Э

Элин in Laravel Pro
Хм, есть над чем подумать)
Спасибо большое за дискуссию 🙏🏻
источник

Э

Элин in Laravel Pro
Я изначально думал сделать что то типа EAV архитектуры, но что то не хочется этого делать.
источник

M

Maxx in Laravel Pro
слишком сложные запросы будут — через полгода станет "жыссь не мила" =)
не "по джойну на локаль", конечно,
в таком случае лучше делать кросс-джойн, который бы собирал переводы в тот же JSONB или просто выдавал первый попавшийся.
источник

Э

Элин in Laravel Pro
Принял. Интересная задачка)

Спасибо 🙏🏻
источник

Э

Элин in Laravel Pro
У меня там +15 джойнов на другие запросы, а тут ещё переводы)
источник

M

Maxx in Laravel Pro
я уже перестал триггериться на кол-во джойнов =)
если все идут по ПК, и сам запрос влазит в 100мс по времени, то даже не напрягаюсь.
если выходит за 300мс, чувствую себя неуютно.
если 500+мс, начинаю оптимизировать всё, до чего руки дотянутся
источник

Э

Элин in Laravel Pro
Ну, нормально :)
источник

ВК

Владимир Карпов... in Laravel Pro
добрый день, при запуске приложения локально гугл выдает
тип отказано в доступк
источник

ВК

Владимир Карпов... in Laravel Pro
на одном компе
источник

ВК

Владимир Карпов... in Laravel Pro
а на другом все работает
источник