iambib / collection-extender
Laravel/Lumen 9+ Collection Extender
Installs: 1 130
Dependents: 0
Suggesters: 0
Security: 0
Stars: 0
Watchers: 1
Forks: 0
Open Issues: 0
Requires
- php: >=8.0
- ext-curl: *
- ext-json: *
- illuminate/collections: >=9.0
This package is auto-updated.
Last update: 2024-12-26 17:16:36 UTC
README
This is a set of Illuminate\Support\Collection items I use on a daily bases
Install
REQUIREMENTS
Laravel / Lumen version 9+
Installation
composer require iambib/collection-extender
Currently available
$collection->recursive();
$collection->pushToKey($key, $value, ?$recursive);
$collection->toModel(?$model_class);
$collection->input($keys,?$default);
$collection->morphTo($object_class)
Examples
1. $collection->recursive()
From array / multidimensional array
$array = [
'foo'=>'bar',
'bar'=>[
'foo'=>'Lorem',
'bar'=>'Ipsum',
],
];
to Illuminate\Support\Collection
Illuminate\Support\Collection {#354 ▼
#items: array:2 [▼
"foo" => "bar"
"bar" => Illuminate\Support\Collection {#358 ▼
#items: array:2 [▼
"foo" => "Lorem"
"bar" => "Ipsum"
]
#escapeWhenCastingToString: false
}
]
#escapeWhenCastingToString: false
}
2. $collection->pushToKey('foo', 'newValue')
From single key value
Illuminate\Support\Collection {#354 ▼
#items: array:2 [▼
"foo" => "bar"
"bar" => Illuminate\Support\Collection {#358 ▼
#items: array:2 [▼
"foo" => "Lorem"
"bar" => "Ipsum"
]
#escapeWhenCastingToString: false
}
]
#escapeWhenCastingToString: false
}
To array key value
Illuminate\Support\Collection {#354 ▼
#items: array:2 [▼
"foo" => array:2 [▼
0 => "bar"
1 => "newValue"
]
"bar" => Illuminate\Support\Collection {#358 ▼
#items: array:2 [▼
"foo" => "Lorem"
"bar" => "Ipsum"
]
#escapeWhenCastingToString: false
}
]
#escapeWhenCastingToString: false
}
3. $collection->toModel works in 2 different ways
With model class as param
$collection->toModel(\App\Models\User::class)
From collection
Illuminate\Support\Collection {#352 ▼
#items: array:2 [▼
"foo" => "bar"
"bar" => array:2 [▼
"foo" => "Lorem"
"bar" => "Ipsum"
]
]
#escapeWhenCastingToString: false
}
or without model class as param
$collection->toModel()
Which will look for the key that is configured in collection-callback.php as a model_class_key
Config
return [
'model_class_key' => 'model_name',
];
From collection
Illuminate\Support\Collection {#353 ▼ // packages/iambib/collection-extender/src/Providers/AppServiceProvider.php:78
#items: array:3 [▼
...
"model_name" => "App\Models\User"
]
#escapeWhenCastingToString: false
}
To Model
App\Models\User {#360 ▼
#attributes: array:2 [▼
"foo" => "bar"
"bar" => array:2 [▼
"foo" => "Lorem"
"bar" => "Ipsum"
]
]
#hidden: []
#visible: []
#appends: []
#fillable: []
#guarded: []
#casts: []
#rememberTokenName: "remember_token"
#autoload_relations: []
}
4. $collection->input('bar.foo')
$default can be string or callback
From collection
Illuminate\Support\Collection {#352 ▼
#items: array:2 [▼
"foo" => "bar"
"bar" => array:2 [▼
"foo" => "Lorem"
"bar" => "Ipsum"
]
]
#escapeWhenCastingToString: false
}
Returns
"Lorem"
$collection->input('bar.foo.empty','Not found')
Returns
"Not found"
5. $collection->morphTo(ApiResponse::class)
Morphs current collection into an object that you need
From collection
Illuminate\Support\Collection {#354 ▼
#items: array:3 [▼
"status" => true
"data" => array:2 [▼
"foo" => "bar"
"bar" => array:2 [▼
"foo" => "Lorem"
"bar" => "Ipsum"
]
]
"message" => "Success"
]
#escapeWhenCastingToString: false
}
to ApiResponse
ApiResponse {#361 ▼
#status: true
#data: array:2 [▼
"foo" => "bar"
"bar" => array:2 [▼
"foo" => "Lorem"
"bar" => "Ipsum"
]
]
#message: "Success"
#errors: null
}