Laravel – sort collection, JSON returns object

Sorting is very common operation in many languages and a lot of data. Of course the best way is to sort on database, because it’s created for such operations, but sometimes I work with smaller parts of data and do that on API server side. Since when I’ve used Laravel, I often use Collections instead of arrays – they methods are very clean, simple and offer a lot of possibilities. I also often sort collections before outputting them as, for example JSON – natural sorting is more than useful in so many cases. But there is one important thing: if you have associative array (or collection) and use sorting, you client will not receive valid array, but object. This short post will show you, how to deal with it.

Continue reading “Laravel – sort collection, JSON returns object”

Small tip – attaching projects on PHPStorm / WebStorm

This post is very, very small tip about nice feature, that I recently disovered on PHPStorm, but it’s also available on other JetBrains software. All their IDEs supports projects, we can create a lot of them and open many in the same way in separate windows, or by replacing currently opened project. But when we try to do this – using File menu and option to open new project – there is one additional option, to attach project. What is it and what can we achive using this option?

When we attach two separate projects, we have both on project list and tree view, also, repositories are common, if names of branches are the same. If you will then try to change branch, for example from master to dev, IDE will do this for both repositories. If we want to commit changes and then push them, IDE will display all attached projects. It’s very nice options for much faster work: for example I can attach project for frontend and backend in the same time, and work in whole project, without any distractions, without chaning window, screens etc. Do you know any interesting features in these or similar IDEs? Write comment and describe them!

Laravel Eloquent: MongoDB relations

Laravel MongoDB

Laravel offers very complex Eloquent – ORM simple to use, but with a lot of options. One of them is relations support. We can define several types of relations between our models and then use them to simplify get the data. Relations are also support by MongoDB extension for Eloquent, which is available on GitHub. Sometimes it may be difficult to use because of some issues with ObjectId and BSON. Let’s see how it can be solved.

Continue reading “Laravel Eloquent: MongoDB relations”

Create development environment on MacOS using Homebrew

I prefer MacOS to develop, because it’s much more stable than Windows 10 – last issues with October update are the best evidence, that something is not ok with this OS development. It’s similar to Linux in many ways, but not exactly Linux like Debian, Ubuntu, RHEL etc. In effect, we can’t just use build-in repositories to install some required software, services and servers. But there is very nice option called Homebrew. Using this, we can make MacOS even closer to Linux system and configuration will be simpler.

Continue reading “Create development environment on MacOS using Homebrew”

PHP: anonymous functions, lambdas and closures

Three months ago I wrote post about arrow functions in JavaScript. It’s very nice feature, that can help write code faster and also solves “this” keyword range and visibility. This method is available in JavaScript and several other languages. But what about PHP? Unfortunatelly, we can’t use arrow functions in this language, they aren’t supported now (November 2018), there is only a RFC and experimental implementantion. Maybe in next versions… But we can also use anonymous functions, we can also use closures and lambdas. This post is about them.

Continue reading “PHP: anonymous functions, lambdas and closures”