Volodymyr
Кто подскажет почему в методе коллекции - трансформ , не применяются никакие операции хеширования.
Volodymyr
Если например делать не sha1 а просто множить на 2 , то все работает, Hashid, sha, md5 и тд записывают либо 0 либо 4 либо 6 в не понятном порядке.
Maksim (Ellrion)
Скрин выше
всё дело в том что у тебя модели. и у моделей по дефолту id это праймари кей и по дефолту он автоинкрементен и соответс твенно он по дефолту имеет кастинг в int
Volodymyr
что поменять на интеджер?
Колонку в таблице не автоинкремент сделать а просто инт
Maksim (Ellrion)
Колонку в таблице не автоинкремент сделать а просто инт
ну как бы ты делаешь не инт это стринг. ну и тип поля в бд не важен. важны настройки модели
Maksim (Ellrion)
https://github.com/laravel/framework/blob/5.6/src/Illuminate/Database/Eloquent/Concerns/HasAttributes.php#L856-L863 https://github.com/laravel/framework/blob/5.6/src/Illuminate/Database/Eloquent/Model.php#L1259-L1267 https://github.com/laravel/framework/blob/5.6/src/Illuminate/Database/Eloquent/Model.php#L62
Volodymyr
ну как бы ты делаешь не инт это стринг. ну и тип поля в бд не важен. важны настройки модели
Что именно прописать в модели что бы отменить это поведение
Maksim (Ellrion)
пройдись по ссылкам и станет понятнее. у тебя реально в бд модель с автоинкрементом или нет? что дает тебе хеширование? это только для вывода или ты будешь так сохранять модель?
Volodymyr
В бд автоинкремент
Maksim (Ellrion)
ну можешь на лету сделать у моделей ->setIncrementing(false)
Maksim (Ellrion)
можешь прямо на строчках с ретурном (потому что это только на геттеры влияет, но если нет, то до присвоения)
Volodymyr
ну можешь на лету сделать у моделей ->setIncrementing(false)
Не у компа еще, попробую отпишусь! Спасибо!
SarcasmIO
а зачем вы юзаете AI ?
Volodymyr
а зачем вы юзаете AI ?
Какой-то явной причины нет, а это плохая практика?
Maksim (Ellrion)
я думаю это стандартная штука типо id для внутреннего пользования а хеш для сокрытия id для внешнего
SarcasmIO
Какой-то явной причины нет, а это плохая практика?
ну по крайней мере, есть такое мнение :)
Maksim (Ellrion)
ну по крайней мере, есть такое мнение :)
а что ты ему предлогаешь вместо? uuid?
SarcasmIO
я не ориентируюсь сейчас на конкретный кейс и не советую, просто стало интересно первопричину ;)
Maksim (Ellrion)
Volodymyr
Это проект на котором уже все это есть, я просто разбираюсь в логике что там и как. Просто по какой-то причине не юзаются методы моделей и коллекций лары, везде все через кастомные трансформеры
Volodymyr
Доктрина впилена и тд
Maksim (Ellrion)
SarcasmIO
user_id допустим
Maksim (Ellrion)
обычно нужна не причина использовать автоинкрементный ключь а причина отказаться от стандартного автоинкрементного ключа в бд
SarcasmIO
ты оперируешь на то, что AI дает твоим данным некую согласованность :)
Maksim (Ellrion)
user_id допустим
что такое user_id?
SarcasmIO
что такое user_id?
ты задал супер абстрактный вопрос без контекста, я тебе ответил на него)
Maksim (Ellrion)
у меня есть подозрение что ты как то по своему понимаешь AI
SarcasmIO
нет, погоди, я сказал что он мне не нужен и что вместо него я юзаю любой доступный мне уникальный ключь
SarcasmIO
ты спросил какой, я привел пример
SarcasmIO
просто я так и не услышал довода в пользу, AI юзаем потому что потому... )
Anton
AI - auto increment или arificial intellect?
SarcasmIO
первое
Anton
потому что это удобно и под это многое что заточено
Maksim (Ellrion)
потому что нам нужен уникальный ключь. бд имеет стандартную возможность его генерить. без колизий и необходимости это контролировать нам
Anton
но ведь у реальных данных нет ключа)
Тем и удобно что БД сама создает тебе этот ключ
Anton
без твоего участия
SarcasmIO
так а юз кейсы будут?
Maksim (Ellrion)
так а юз кейсы будут?
удаление, изменение модели
Maksim (Ellrion)
поиск
Maksim (Ellrion)
связи
Anton
поиск тут врядли, по первичному ключу (а auto increment вроде как только первичным может быть, но могу ошибаться) это скорее не поиск, а взятие по первичному...
Maksim (Ellrion)
ну это придирка к терминологии. да и метод называется обчно find)
Anton
Это мы понимаем, а люди могут подумать что реально поиск по не первичному ключу 🙂
Anton
А то добавят auto increment к текстам и будут считать что у них поиск по тексту работать теперь будет 🙂
Dmitry
коллеги. не флуда ради. подскажите почему ларка юзает activerecord в лице Eloquent, в то время как сам паттерн немножко нарушает принципы solid и симфони с версии 2 уже переползли на datamapper ?
Просто разные весовые категории: Yii - это массовый RAD фреймворк. Там важна простота и скорость. Ради этого можно забить на архитектуру. Он живёт почти вообще без SOLID и прочих штук. И там почти никто не знает про DIC, конструкторы, приватные поля, PSR и шаблонизаторы. Symfony и Zend - это, наоборот, самые навороченные энтерпрайз-решения для серьёзных проектов, где абсолютно всё сделано по SOLID и прочим принципам и лучшим архитектурным практикам. Laravel - промежуточный вариант, построенный на компонентах Symfony и своих с добавлением собственных упрощений. Там можно работать как в RAD-режиме с фасадами и CRUD-ами для простых проектов, так и как угодно заморачиваться для сложных. Поэтому в массовых Yii и Laravel в комплекте идёт простая ActiveRecord, а в специфичных уже какой-либо DataMapper. Но никто не мешает при желании подключить либо Doctrine в Laravel, либо Eloquent или Propel в Symfony.
Maksim (Ellrion)
да да AР такой плохой и не интерпрайзный, но почему то он и в ларе и в рельсах и в джанго
Maksim (Ellrion)
видимо для неосиляторов священного грааля в виде датамепера
Dmitry
да да AР такой плохой и не интерпрайзный, но почему то он и в ларе и в рельсах и в джанго
Ruby on Rails' emergence in the 2000s greatly influenced web app development, through innovative features such as seamless database table creations, migrations, and scaffolding of views to enable rapid application development. Ruby on Rails' influence on other web frameworks remains apparent today, with many frameworks in other languages borrowing its ideas, including Django in Python, Laravel in PHP, Phoenix in Elixir, and Sails.js in Node.js.
Maksim (Ellrion)
ок
Dmitry
да да AР такой плохой и не интерпрайзный, но почему то он и в ларе и в рельсах и в джанго
Так что в тысячах неэнтерпрайзных массовых простых проектов удобен простой неэнтерпрайзный AR. А в единицах энтерпрайзных специфических - энтерпрайзный сколь угодно кастомизируемый DM. Логично.
Anton
Если проект небольшой то логика в модели самое то
Anton
Это как минимум логично.
Низомиддин
Здравствуйте ребята у меня такая ошибка при регистрации в чём праблема немогу понять можите подсказать
Низомиддин
Anton
Если что крупнее то отдельные классы, но в конечном все крутится вокруг модели а не контроллеров
Dmitry
Если проект небольшой то логика в модели самое то
Логика как раз и должна быть в "модели". Это в любом проекте самое то.
Nik
Просто разные весовые категории: Yii - это массовый RAD фреймворк. Там важна простота и скорость. Ради этого можно забить на архитектуру. Он живёт почти вообще без SOLID и прочих штук. И там почти никто не знает про DIC, конструкторы, приватные поля, PSR и шаблонизаторы. Symfony и Zend - это, наоборот, самые навороченные энтерпрайз-решения для серьёзных проектов, где абсолютно всё сделано по SOLID и прочим принципам и лучшим архитектурным практикам. Laravel - промежуточный вариант, построенный на компонентах Symfony и своих с добавлением собственных упрощений. Там можно работать как в RAD-режиме с фасадами и CRUD-ами для простых проектов, так и как угодно заморачиваться для сложных. Поэтому в массовых Yii и Laravel в комплекте идёт простая ActiveRecord, а в специфичных уже какой-либо DataMapper. Но никто не мешает при желании подключить либо Doctrine в Laravel, либо Eloquent или Propel в Symfony.
потому йии девов и считают говнокодерами, и проекты в большинстве своем достаются дико засранные
Dmitriy
логика долна быть в сервисах. не зачем ее пихать в модели
Anton
Логика как раз и должна быть в "модели". Это в любом проекте самое то.
+ другое дело что для меня модель это не только класс ar
Daniil 👾
Логика как раз и должна быть в "модели". Это в любом проекте самое то.
что-то мне кажется что в моделях логики быть не должно. Для чего тогда сервисы?
Alexander
В ошибке же написано в чем проблема