Laravel по-русски

Русское сообщество разработки на PHP-фреймворке Laravel.

Ты не вошёл. Вход тут.

#1 15.11.2016 18:48:37

Странности Eloquent ORM при работе с MongoDB

Вот так массив значений заполняется:

$result = DB::connection('mongodb')->collection('products')
	->where('category_id','=',(int)$category_id);

А вот так не заполняется (ошибки не выдает, просто пустой массив):

$result = DB::connection('mongodb')->collection('products')
	->where('category_id','=',(int)$category_id)
	->get();

Винда может так подгадить?

Не в сети

#2 15.11.2016 19:14:12

Re: Странности Eloquent ORM при работе с MongoDB

Снимаю вопрос. В первом случае - что угодно, только не данные.

Извините.

Не в сети

#3 15.11.2016 20:13:00

Re: Странности Eloquent ORM при работе с MongoDB

Это «ленивая» коллекция, данных там нет, пока её не начать перебирать, или до get() (count и т.д.).

  1. Форум » Laravel 4

В проекте действительно L4?

Не в сети

#4 16.11.2016 10:20:07

Re: Странности Eloquent ORM при работе с MongoDB

Proger_XP пишет:

В проекте действительно L4?

Да, консоль так сказала, да и по всему видно.

По мне - и Laravel не беда, не будь Mongo  в проекте. Бьюсь.

Уже знаю, про что будет моя следующая статья smile Ничего нет толкового про Монго, особенно под Ларой. Дают ссылку, ссылка ведет на другую ссылку, а там в итоге фигня какая-то.

Не в сети

#5 16.11.2016 11:12:38

Re: Странности Eloquent ORM при работе с MongoDB

  1. По мне — и Laravel не беда, не будь Mongo в проекте. Бьюсь.

Не обижайтесь, но вы как будто проспали 20 лет и выйдя из спячки внезапно обнаружили кучу новых вещей — MVC, ORM, NoSQL-БД и теперь все эти новшества вам кажутся странными и неразумными. Зачем вас понесло в веб-разработку?

Не в сети

#6 16.11.2016 11:22:36

Re: Странности Eloquent ORM при работе с MongoDB

Proger_XP пишет:

}%> По мне - и Laravel не беда, не будь Mongo  в проекте. Бьюсь.
Не обижайтесь, но вы как будто проспали 20 лет и выйдя из спячки внезапно обнаружили кучу новых вещей - MVC, ORM, NoSQL-БД и теперь все эти новшества вам кажутся странными и неразумными. Зачем вас понесло в веб-разработку?

Все наоборот. Я удивляюсь: сплю я, что ли??? Было ж все это 20 лет назад - и было отвергнуто. Совершенно справедливо, на мою думку. Появились нормальные, адекватные технологии. И вдруг все это отвергнутое и отсталое полезло вновь - но это теперь инновации.

Мне это напоминает эстраду: стали перепевать древние-древние песни. Они теперь - новые. Так и здесь.

* * *
Вот Вы мне может объяснить: чем Монго лучше того же MySQL?  Только просьба - без пропагандисткого гундежа. А вот так, чтоб я понял - да, нужно изучать, потому что есть очевидное преимущество?

Не в сети

#7 16.11.2016 11:41:23

Re: Странности Eloquent ORM при работе с MongoDB

  1. И вдруг все это отвергнутое и отсталое полезло вновь — но это теперь инновации.

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

  1. Вот Вы мне может объяснить: чем Монго лучше того же MySQL?

Я сам Mongo не использую, т.к. традиционные RDBMS мне ближе, они более строгие. Но для некоторых эта особенность Mongo как раз главное преимущество. Не нужно продумывать структуру таблиц, связи, оптимизировать индексы (по-моему в последних версиях Mongo индексы всё-таки появились, но изначально это не nosql-way). В теории NoSQL даёт очень быстрое прототипирование (структура данных меняется на лету) и исключает проблемы с дальнейшим развитием системы (не надо мигрировать старые данные, часть могут быть с старом формате, часть в новом), а скорость доступа/выборки исправляется за счёт сбора статистики и автоматической оптимизации (индексов).

На практике RDBMS никуда не делись, т.к. Mongo это как глина, которая сама структуру не даёт и целиком зависит от усилий разработчика. Поэтому на поверхности с ней всё просто, но также просто использовать её неправильно. NoSQL отлично подходят для двух вещей, на мой взгляд:

  1. Интеграция с Node.js. Mongo это фактически «БД на JSON», она идеальна для сервера на JavaScript.
  2. Кэширование между RDBMS и бекендом (php ↔ redis ↔ mysql). Очень удобно за счёт того, что на каждый чих не надо создавать таблиц, а достаточно дать ключу любое имя. Redis заменяет собой таблицы типа «config» или «cache», которые и есть пары ключ/значение, только с таблицами значения надо сериализовывать в коде, а с Redis нет. При таком подходе БД выполняет только тяжёлую работу, а мелкие запросы отдаются из памяти предыдущим слоем. БД тоже умеет кэшировать результаты, поэтому это оправдано только при большой нагрузке, где надо экономить на каждом обращении к БД.

Честно говоря, для PHP я не вижу причин использовать Mongo (если нет особых требований типа интеграции с чем-то ещё). Что касается производительности «NoSQL на уровне RDBMS», то я как-то делал тесты на очень большом числе числовых данных для Mongo и для Postgres, последний выиграл с большим перевесом. На мой взгляд Mongo лучше всего вписывается в инфраструктуру Node.js.

Не в сети

#8 16.11.2016 11:57:44

Re: Странности Eloquent ORM при работе с MongoDB

Вот читаю я Вас - и вспоминаю целый пласт кинематографа, когда два главных героя: один - опытный ветеран, второй - новичок, но обученный по последнему слову. Второй - конечно, молодец, и именно благодаря его смелым решениям все получается. Но ничего б не получилось, если б первый постоянно не вытаскивал второго из ...ма.

Потому что новое - не только не всегда лучшее. Это даже и не всегда новое.

Не в сети

#9 16.11.2016 12:14:27

Re: Странности Eloquent ORM при работе с MongoDB

  1. Потому что новое — не только не всегда лучшее. Это даже и не всегда новое.

Разве кто-то с этим спорит? Я — нет. Особенно сегодня, когда маркетинг завладел миром и всё, от фреймворков до раскрытия уязвимостей, делается напоказ, с фанфарами, броскими названиями, логотипами, одностраничниками и так далее. Хотя внутри может быть самое бедное содержание, а «у моего соседа Васи» всё в десять раз лучше, но почему-то о нём никто не знает. Наверное, логотип плохой.

Но надо всё-таки понимать, что среди кучи таких «вбросов» есть действительно достойные решения. К примеру. Redis — очень приятная in-memory database, быстрая, компактная, без наворотов.

Не в сети

#10 16.11.2016 12:39:50

Re: Странности Eloquent ORM при работе с MongoDB

Proger_XP пишет:

Но надо всё-таки понимать, что среди кучи таких "вбросов" есть действительно достойные решения.

Разумеется. Но такие решения должны обладать некоторым очевидным преимуществом. А не просто "моложе - значит лучше".

...Сорри. Поехал я с 4-го Laravel-а на пятый. Буду сильно занят.

Не в сети

Подвал раздела