Nano Hash - криптовалюты, майнинг, программирование

Laravel без миграции Eloquent и базы данных?

Я программист PHP уже 12 лет и много раз изобретал колесо, создавая собственную структуру для нашего веб-приложения с закрытым исходным кодом, которое предлагается в виде размещенного решения с использованием одной и той же общей базы данных для всех. клиенты.

Сейчас я пробую Laravel 5 и заметил, что почти в каждом примере используется Eloquent и миграция базы данных. Мне кажется, что такие вещи ориентированы на простые базы данных и людей, которым не нравится SQL или дизайн базы данных (но я могу ошибаться).

Наша база данных MySQL содержит более 100 таблиц, множество хранимых процедур и множество триггеров, которые я просто не могу представить в ORM. Мы используем Navicat для проектирования баз данных и тестирования SQL-запросов. Для обновления базы данных до более новой версии приложения мы уже написали несколько хороших скриптов и даже визуальных инструментов.

Итак, в основном мой вопрос заключается в том, действительно ли Laravel предназначен для использования с Eloquent и миграциями или без них я действительно упускаю много функций.

Что вы порекомендуете?


  • извините и Тиа; это не имеет значения, вы пробовали codeignighter с доктриной с mysql db и extjs в пользовательском интерфейсе? это может быть лучше подходит. 23.12.2015
  • это зависит от вас, если вы не хотите использовать красноречие, но я думаю, что миграция - это круто. 23.12.2015
  • Никогда не пробовал Codeigniter, но мне очень хотелось бы использовать Laravel, так как в настоящее время он кажется наиболее используемым фреймворком. Сейчас мы используем собственный фреймворк AJAX, но планируем начать использовать AngularJS или EmberJS. 23.12.2015
  • Вы абсолютно можете использовать Laravel без ORM и миграции, но если ваша команда разработчиков разрабатывает на локальном хосте и использует git для внесения изменений, миграции действительно полезны, чтобы поддерживать базу данных одинаковой для всех ваших программистов. С другой стороны, ORM не является обязательным, поскольку другие говорили, что вы можете использовать необработанные запросы с DB:statement, это на ваше усмотрение. 23.12.2015
  • Такая же ситуация здесь. У меня очень сложные запросы (несколько строк), а Eloquent просто мучителен и заставляет меня хотеть sreeeeemmm... Я просто не могу выполнять эти запросы с ORM и красноречивым 10.06.2017

Ответы:


1

Тебе решать,

Миграция Laravel предназначена для сохранения версии базы данных (при использовании контроллера версий), а красноречивый предназначен для простого сопоставления отношений между таблицами для сложных ситуаций, таких как множественное присоединение, и все это не рекомендуется из-за проблем с производительностью, тогда вы можете выбрать Конструктор запросов дает гораздо лучшую производительность. Вам нужно написать простой запрос в Laravel, используя \DB::statement();

Laravel идеально подходит для Angular Js, более того, Laravel — это всего лишь оболочка нескольких приятных PHP-компонентов, способная обеспечить быстрые результаты.

Надеюсь, поможет..

23.12.2015

2

Использование ORM упрощает вашу жизнь, так как большинство распространенных сценариев уже рассмотрены. Извлечение данных, управление взаимосвязями и нетерпеливая/ленивая загрузка очень просты. Он также защищает вас от любых уязвимостей внедрения, которые вы можете создать при написании собственных жестко закодированных запросов. Конечно, не все сценарии могут быть обработаны ORM, отсюда и возможность писать RAW-запросы. Используя Laravel Query Builder, вы можете сделать что-то вроде этого:

$results = DB::select( DB::raw("SELECT * FROM users WHERE username = :username"), ['username' => 'johndoe']);

Если вы хотите выполнять такие вещи, как ALTER или SET, вы можете использовать DB::Statement.

Так что просто отметим, что Eloquent — это ORM Laravel, а Query Builder — это слой для безопасного построения ваших запросов.

Так что решать вам, использовать Eloquent или нет, я считаю, что они добились хороших результатов с помощью надежной ORM, но вы всегда можете реализовать другую ORM, такую ​​​​как Doctrine, Data Mapper и т. Д. Для большинства из них есть привязки Laravel. те.

Редактировать: Стоит также упомянуть, что модель Eloquent предоставляет некоторые удобные дополнительные функции, которые также упрощают работу, например преобразование JSON в __toString, защищенные атрибуты, приведение даты и т. д. При извлечении нескольких моделей они будут храниться в Collection, Arrayable, который предлагает еще больше способов сделать счастливые времена. Проверьте это: http://laravel.com/docs/5.1/eloquent-collections

23.12.2015

3

Вы можете запускать простые SQL-запросы в Laravel, если хотите, но на самом деле в большинстве примеров используется Eloquent.

Я выполнял проект с более чем 100 таблицами, и в большинстве случаев можно использовать Eloquent вместо того, чтобы каждый раз помещать необработанные SQL-запросы, но это скорее мое предпочтение.

Однако вы упомянули, что у вас много хранимых процедур и триггеров в базе данных. Честно говоря, вы должны переосмыслить это, потому что теперь вы можете помещать много бизнес-логики в базу данных, а ваша логика находится как в базе данных, так и в приложении.

Пару месяцев назад я видел такую ​​базу данных в MsSQL, и это было ужасно — никто толком не знал, что происходит, и когда вы хотели перенести эту базу данных в приложения MySQL и Laravel, это было большой проблемой, потому что в базе данных было слишком много логики (я не участвовал в этом проекте, только посмотрел)

23.12.2015
Новые материалы

Кластеризация: более глубокий взгляд
Кластеризация — это метод обучения без учителя, в котором мы пытаемся найти группы в наборе данных на основе некоторых известных или неизвестных свойств, которые могут существовать. Независимо от..

Как написать эффективное резюме
Предложения по дизайну и макету, чтобы представить себя профессионально Вам не позвонили на собеседование после того, как вы несколько раз подали заявку на работу своей мечты? У вас может..

Частный метод Python: улучшение инкапсуляции и безопасности
Введение Python — универсальный и мощный язык программирования, известный своей простотой и удобством использования. Одной из ключевых особенностей, отличающих Python от других языков, является..

Как я автоматизирую тестирование с помощью Jest
Шутка для победы, когда дело касается автоматизации тестирования Одной очень важной частью разработки программного обеспечения является автоматизация тестирования, поскольку она создает..

Работа с векторными символическими архитектурами, часть 4 (искусственный интеллект)
Hyperseed: неконтролируемое обучение с векторными символическими архитектурами (arXiv) Автор: Евгений Осипов , Сачин Кахавала , Диланта Хапутантри , Тимал Кемпития , Дасвин Де Сильва ,..

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

Обеспечение масштабируемости LLM: облачный анализ с помощью AWS Fargate и Copilot
В динамичной области искусственного интеллекта все большее распространение получают модели больших языков (LLM). Они жизненно важны для различных приложений, таких как интеллектуальные..