If you have a collection you can tap a relationship of an object in the collection to get a new collection of the relationship data. You can also tap a property of the object in the collection to get a new collection of all instances of that property in that collection.
$users = User::all();
$actions = $users->roles->actions;
$roleNames = $users->roles->name;
In this example, $actions would return a collection of all actions attached to all roles attached to the users.
$roleNames
would return a collection of every role name for each role the users are attached to.
You can run a method on the entire collection such as save()
, or delete()
. If you wanted to delete an entire
collection you could do
$users->roles->delete();
If you need to return a specific set of objects from a collection you can call the getWhere()
method on the collection.
This is a magic method used to search the collection. Get where can take several extra parameters by changing the method name.
getWhere[ in | between | like | null | many ] [not] [ first | last ](mixed $column, mixes $value) |
Method Name | Parameters | Result |
---|---|---|
getWhere | STRING $column STRING $value |
This will return all object in the collection that have the column $column that equals $value . |
getWhereIn | STRING $column STRING $values |
This will return all objects in the collection where the column $column is in the array of $values . |
getWhereBetween | STRING $column STRING $values |
This will return all objects in the collection where the column $column is between $values[0] and $values[1] . |
getWhereLike | STRING $column STRING $value |
This will return all objects in the collection where column $column contains the sub string $value . |
getWhereNull | STRING $column | This will return all objects in the collection where column $column is null. |
getWhereMany | ARRAY $columns => $values | This will return all objects in the collection that match all where statements in the passed in array. |
Modifier Name | Effect | Examples |
---|---|---|
not | Reverses the effects of the methods. | getWhereNotIn, getWhereNot, getWhereNotBetween |
first | This will return only the first object in the collection. | The first operator can be added to all methods to return the first result. |
last | This will return only the last object in the collection. | The last operator can be added to all methods to return the last result |
{info} In all of the above methods you can use
->
to tap through objects.
Ex:$this->collection->getWhereNotBetween('kids->age', [2, 4])
s;
You can also look at the tests for more examples
$aColleciton->getWhere('aField','Some Text');
$aCollection->getWhere('relationship->aField', 'Some Text');
$aCollection->getWhereNot('relationship->aField', 'Some Text');
The explode
static method is used to break a string directly into a collection.
SupportCollection::explode('glue', 'string');
The parseMixed
method is used to try and convert anything to a collection.
$commaString = EloquentCollection::parseMixed(',foo,bar,baz,', ',|+');
$pipeString = EloquentCollection::parseMixed('foo|bar|baz', ',|+');
$plusString = EloquentCollection::parseMixed('foo+bar+baz', ',|+');
$allString = EloquentCollection::parseMixed('foo,|+bar+baz', ',|+');
$array = EloquentCollection::parseMixed(['foo', 'bar', 'baz']);
All of the above examples will convert to a valid collection. The first parameter is the item to parse and the second is the delimiter used in the case of the item being a string.