Athari / YaLinqo

Yet Another LINQ to Objects for PHP [Simplified BSD]
https://athari.github.io/YaLinqo
BSD 2-Clause "Simplified" License
439 stars 39 forks source link

Using YaLinqo with Slim Framework #31

Closed RODOBTA closed 6 years ago

RODOBTA commented 6 years ago

I have not been able to add the library to a Slim project and be able to use it. Somebody made it?

Athari commented 6 years ago

@RODOBTA What are your problems exactly? Show your code, error messages you receive etc.

RODOBTA commented 6 years ago

@Athari It does not generate any error, it just returns an empty object, I do not know if I'm missing any reference, or upload a file

My code: image

My references: image

Result: image

If I omit the part of the first image, this is the result: image

Athari commented 6 years ago

@RODOBTA Not sure what IDE you're using and how "Pretty" works, but if you switch to "Raw" you'll probably see that you're inspecting an iterator class (Enumerable) with private fields. As getting values from iterators changes their state, IDEs can't display their contents in a nice way without breaking the code.

In general, YaLinqo produces iterators, not pure arrays. You need to iterate over them with foreach (preferable) or convert them to arrays or some other format (using toList, toArray, toDictionary, toJSON etc.) or reduce them to single values (min, max etc.).

If the code you quoted is used by a method which expects arrays (I don't know how Slim works), then you can append ->toList() to your method chain:

return from($result)->where(function($item) { return $item['Id'] == 0; })->toList();

That would also allow IDE on inspect the result.

RODOBTA commented 6 years ago

Using Visual Studio Code: This is my code: image

These are my data: image

What I want to get from $result, are the items that have Padre= 0

Athari commented 6 years ago

@RODOBTA

  1. I don't see ->toList() in your code.
  2. I don't see the error you receive.
  3. Items of your $result array seem to be objects, not arrays, so $item['Padre'] syntax isn't supposed to work (members are accessed with -> operator).
RODOBTA commented 6 years ago

@Athari I have modified the form of access to the property, and add the toList (): image

this is the error that I receive image

Athari commented 6 years ago

@RODOBTA Class members in PHP are accessed using -> operator, not .. You need to write ->toList(), not .toList().

RODOBTA commented 6 years ago

@Athari It worked perfect, I had not noticed the error in .toList(), replaced by ->toList() now it works great. Thank you very much.