Download the PHP package hindy/orm without Composer

On this page you can find all versions of the php package hindy/orm. It is possible to download/install these versions without Composer. Possible dependencies are resolved automatically.

FAQ

After the download, you have to make one include require_once('vendor/autoload.php');. After that you have to import the classes with use statements.

Example:
If you use only one package a project is not needed. But if you use more then one package, without a project it is not possible to import the classes with use statements.

In general, it is recommended to use always a project to download your libraries. In an application normally there is more than one library needed.
Some PHP packages are not free to download and because of that hosted in private repositories. In this case some credentials are needed to access such packages. Please use the auth.json textarea to insert credentials, if a package is coming from a private repository. You can look here for more information.

  • Some hosting areas are not accessible by a terminal or SSH. Then it is not possible to use Composer.
  • To use Composer is sometimes complicated. Especially for beginners.
  • Composer needs much resources. Sometimes they are not available on a simple webspace.
  • If you are using private repositories you don't need to share your credentials. You can set up everything on our site and then you provide a simple download link to your team member.
  • Simplify your Composer build process. Use our own command line tool to download the vendor folder as binary. This makes your build process faster and you don't need to expose your credentials for private repositories.
Please rate this library. Is it a good library?

Informations about the package orm

Mindy ORM (Django like ORM)

Build Status Coverage Status Latest Stable Version Total Downloads

Еще одна реализация Django ORM на PHP. На текущий момент находится в стадии активной доработки и не рекомендуется к использованию в production до версии 1.0.

Приносим извинения за неполноту документации. Документация находится разработке.

Часть кода основана на yii2 фреймворке, но ввиду монолитности ядра мы были вынуждены "распилить" фреймворк по отдельным пакетам. В Mindy ORM активно используется Query из yii2.

Поддерживаемые типы субд: sqlite, mysql, pgsql, mssql (все то, что умеет yii2 query). Теоретически ORM способна работать с NoSql хранилищами за счет реализации собственного менеджера с переопределением Lookup'ов.

Краткий пример возможностей ORM

Опишем подключение к бд:

Опишем модель:

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

В бд создатутся таблицы всех переданных моделей а так же индексы и связи если это возможно.

Создадим несколько записей:

Выборки реализованы по аналогии с Django Framework:

И так далее. Более подробную информацию смотрите в разделе Lookups

Очистим базу данных:

Менеджеры

Менеджер это интерфейс проксирующий до класса QuerySet, который занимается обработкой наших Lookup'ов и выполнением запросов. Каждая модель по умолчанию имеет менеджер objects().

Менеджер обрабатывает QuerySet. Основным методом менеджера является getQuerySet(). Это возвращает объект, который впоследствии обрабатывается менеджером. Если вы хотите изменить логику менеджера по умолчанию, вы можете создать свой собственный менеджер. Например, activeUsersManager():

Модель с собственным менеджером:

Теперь вы можете использовать ActiveUsersManager() с помощью User::activeUsers(). И все запросы будут выполняться в соответствии с вашей логикой обработки только активных пользователей. Например, этот код поможет выбрать активных пользователей имя которых начинается с 'A':

Manager/QuerySet методы

Methods returning a result

Get

Выборка одного объекта. В случае если объектов соответствующих условию больше 1, выбрасываем исключение, иначе возвращаем объект. Если объектов не найдено, то возвращаем null.

Найдем объект где pk == 5.

All

Возвращает массив моделей класса Model или ассоциативный массив в случае если вызван метод asArray().

Выборка всех пользователей. Вернется массив моделей класса User.

Выборка всех пользователей. Вернется ассоциативный массив.

Count

Возвращает число объектов подходящих под условия выборки

Методы, возвращающие измененный QuerySet

Вы можете вызывать эти методы последовательно:

Данный код возвращает всех пользователей с именем Max живущих не в New York с сортировкой по адресу в обратном порядке.

Filter

Вы можете найти всех пользователей состоящих в группе с именем example, используя следующий код:

group в данном случае связь m2m до модели Group

Exclude

Вы можете найти всех пользователей которые не состоят в группе с названием example, используя следующий код:

group в данном случае связь m2m до модели Group

Order

Поиск всех пользователей и сортировка по имени:

Поиск всех пользователей и сортировка по имени в обратном порядке:

Поиск всех пользователей и сортировка в случайном порядке

Lookups

С помощью лукапов(lookups) вы можете фильтровать QuerySet. Лукапы применяются в методах менеджера exclude() и filter() и передаются в них массивом, где ключом массива являются поля (с лукапами), а значением - значение, по которому и производится фильтрация. Пример лукапа:

Данный лукап указывает на то, что поле name должно быть равно указанному значению. Пример применения:

Выбираем всех пользователей имя которых равно 'Max'. На самом деле, лукап exact является лукапом "по умолчанию". То есть, в данном примере можно было было обойтись условием filter(['name' => 'Max']).

isnull

Лукап, применяющийся для поиска значений NULL в базе данных. Пример применения:

Произойдет выбор всех пользователей cо значением имени в БД NULL.

Если передать false в качестве значения то sql запрос будет выглядеть слудющим образом:

lte, lt

Лукапы, применяющиеся для поиска значений меньше заданного (lt), и меньших либо равных заданному (lte) Пример lt лукапа:

Произойдет выбор всех продуктов с ценой строго меньшей 100.00.

Пример lte лукапа:

Произойдет выбор всех продуктов с ценой меньшей, либо равной 100.00.

lt формирует слудющий sql:

lte формирует слудющий sql:

gte, gt

Лукапы, применяющиеся для поиска значений больше заданного (gt), и больших либо равных заданному (lte) Пример gt лукапа:

Произойдет выбор всех продуктов с ценой строго большей 100.00.

Пример gte лукапа:

Произойдет выбор всех продуктов с ценой большей, либо равной 100.00.

gt формирует слудющий sql:

gte формирует слудющий sql:

exact

Применяется для поиска значний строго равных заданному. Пример:

Произойдет выбор всех пользователей с именем 'Max'. Лукап является лукапом по умолчанию, то есть в предыдущем примере можно указать просто ['name' => 'Max']

contains

Применяется для поиска значений в которых присутствует заданноу значение (аналог - SQL LIKE). Регистрозависимый поиск. Для регистронезависимого используйте lookup icontains. Пример:

Произойдет выбор всех пользователей, в имени которых есть сочетание 'ax'.

icontains

Полностью повторяет lookup contains, но осуществляет регистронезависимый поиск.

startswith

Применяется для поиска значений, начинающихся с заданного значения: Регистрозависимый. Для регистронезависимого используйте lookup istartswith. Пример:

Произойдет выбор всех пользователей, имя которых начинается с 'M'.

istartswith

Полностью повторяет lookup startswith, но осуществляет регистронезависимый поиск.

endswith

Применяется для поиска значний, заканчивающихся заданным значением: Регистрозависимый. Для регистронезависимого используйте lookup iendswith. Пример:

Произойдет выбор всех пользователей, имя которых начинается с 'on'.

iendswith

Полностью повторяет lookup iendswith, но осуществляет регистронезависимый поиск.

in

Применяется для поиска значений, попадающих в список переданных значений: Пример:

Произойдет выбор всех пользователей, pk которых попадают в список [1, 2].

Lookup может принимать QuerySet в качестве значения

Данный лукап позволяет принимать не только массив значений, но и объект QuerySet. В этом случае в запрос будет добавлен подзапрос.

Пример:

Произойдет выбор всех пользователей, имена групп которых начинаются с 'A'. Будет выполнен всего один запрос на выбор пользователей.

range

Данный лукап позволяет найти значения, расположенные между переданных значений. Данный лукап принимает массив из двух элементов.

Пример:

Произойдет выбор всех продуктов с ценой от 10 до 20.

year

Данный лукап работает только с полями типа DateTimeField, DateField. Позволяет найти все значения, расположенные в заданном году.

Пример:

Произойдет выбор всех продуктов, добавленных в 2014 году.

Внимание: sql запрос будет отличаться для разных субд.

month

Данный лукап работает только с полями типа DateTimeField, DateField. Позволяет найти все значения, расположенные в заданном месяце.

Пример:

Произойдет выбор всех продуктов, добавленных в декабре.

Внимание: sql запрос будет отличаться для разных субд.

day

Данный лукап работает только с полями типа DateTimeField, DateField. Позволяет найти все значения, расположенные в заданном дне месяца.

Пример:

Произойдет выбор всех продуктов, добавленных 25 числа любого месяца.

Внимание: sql запрос будет отличаться для разных субд.

week_day

Данный лукап работает только с полями типа DateTimeField, DateField. Позволяет найти все значения, расположенные в заданном дне недели.

Значения: 1 - Воскресенье, 2 - Понедельник, ..., 7 - Суббота. Порядок дней определяет ORM и подстраивает под текущую субд по следующей причине:

Пример:

Произойдет выбор всех продуктов, добавленных в понедельник.

Внимание: sql запрос будет отличаться для разных субд.

hour

Данный лукап работает только с полями типа DateTimeField, TimeField. Позволяет найти все значения, расположенные в заданном часе. Пример:

Произойдет выбор всех продуктов, добавленных в 10 часов.

Внимание: sql запрос будет отличаться для разных субд.

minute

Данный лукап работает только с полями типа DateTimeField, TimeField. Позволяет найти все значения, расположенные в заданной минуте. Пример:

Произойдет выбор всех продуктов, добавленных в 35 минут.

Внимание: sql запрос будет отличаться для разных субд.

second

Данный лукап работает только с полями типа DateTimeField, TimeField. Позволяет найти все значения, расположенные в заданной секунде. Пример:

Произойдет выбор всех продуктов, добавленных в 45 секунд.

Внимание: sql запрос будет отличаться для разных субд.

search

Не реализовано

regex

Поиск по регулярному выражению. Регистрозависимый. Для регистронезависимого используйте lookup iregex. Пример:

Произойдет выбор всех продуктов, соответствующих регулярному выражению [a-z]

Внимание: sql запрос будет отличаться для разных субд.

iregex

Полностью повторяет предыдущий lookup, но осуществляет регистронезависимый поиск.

Внимание: sql запрос будет отличаться для разных субд.

Q-объекты (Query-объекты)

Q-объекты необходимы для удобного формирования условий выборки. Существует 2 Q-объекта: OrQ и AndQ.

Q-объект формируется следующим образом:

И затем его можно передать в методы filter или exclude:

Данный запрос выберет нам все заявки со статусом 1 от пользователя с id равным 1 и заявки со статусом 2 от пользователя с id равным 4.


All versions of orm with dependencies

PHP Build Version
Package Version
Requires hindy/di Version ^0.1.0
hindy/application Version 0.*
hindy/logger Version ^1.0
hindy/query Version ^0.4
hindy/tests Version ^0.1.0
hindy/validation Version 0.1.4.*
imagine/imagine Version ^0.6.2
hindy/storage Version ^0.1.4
Composer command for our command line client (download client) This client runs in each environment. You don't need a specific PHP version etc. The first 20 API calls are free. Standard composer command

The package hindy/orm contains the following files

Loading the files please wait ....