Skip to content

Commit 6247370

Browse files
authored
fix: EloquentCollection find and unique generics (#53239)
1 parent 2044605 commit 6247370

File tree

2 files changed

+10
-6
lines changed

2 files changed

+10
-6
lines changed

src/Illuminate/Database/Eloquent/Collection.php

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -27,7 +27,7 @@ class Collection extends BaseCollection implements QueueableCollection
2727
*
2828
* @param mixed $key
2929
* @param TFindDefault $default
30-
* @return static<TKey, TModel>|TModel|TFindDefault
30+
* @return ($key is (\Illuminate\Contracts\Support\Arrayable<array-key, mixed>|array<mixed>) ? static : TModel|TFindDefault)
3131
*/
3232
public function find($key, $default = null)
3333
{
@@ -470,7 +470,7 @@ public function intersect($items)
470470
*
471471
* @param (callable(TModel, TKey): mixed)|string|null $key
472472
* @param bool $strict
473-
* @return static<int, TModel>
473+
* @return static
474474
*/
475475
public function unique($key = null, $strict = false)
476476
{
@@ -485,7 +485,7 @@ public function unique($key = null, $strict = false)
485485
* Returns only the models from the collection with the specified keys.
486486
*
487487
* @param array<array-key, mixed>|null $keys
488-
* @return static<int, TModel>
488+
* @return static
489489
*/
490490
public function only($keys)
491491
{
@@ -502,7 +502,7 @@ public function only($keys)
502502
* Returns all models in the collection except the models with specified keys.
503503
*
504504
* @param array<array-key, mixed>|null $keys
505-
* @return static<int, TModel>
505+
* @return static
506506
*/
507507
public function except($keys)
508508
{

types/Database/Eloquent/Collection.php

Lines changed: 6 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -5,8 +5,9 @@
55
$collection = User::all();
66
assertType('Illuminate\Database\Eloquent\Collection<int, User>', $collection);
77

8-
assertType('Illuminate\Database\Eloquent\Collection<int, User>|User|null', $collection->find(1));
9-
assertType('Illuminate\Database\Eloquent\Collection<int, User>|string|User', $collection->find(1, 'string'));
8+
assertType('User|null', $collection->find(1));
9+
assertType('string|User', $collection->find(1, 'string'));
10+
assertType('Illuminate\Database\Eloquent\Collection<int, User>', $collection->find([1]));
1011

1112
assertType('Illuminate\Database\Eloquent\Collection<int, User>', $collection->load('string'));
1213
assertType('Illuminate\Database\Eloquent\Collection<int, User>', $collection->load(['string']));
@@ -165,6 +166,9 @@
165166
assertType('Illuminate\Database\Eloquent\Collection<int, User>', $collection->append('string'));
166167
assertType('Illuminate\Database\Eloquent\Collection<int, User>', $collection->append(['string']));
167168

169+
assertType('Illuminate\Database\Eloquent\Collection<int, User>', $collection->unique());
170+
assertType('Illuminate\Database\Eloquent\Collection<int, User>', $collection->uniqueStrict());
171+
168172
assertType('array<User>', $collection->getDictionary());
169173
assertType('array<User>', $collection->getDictionary($collection));
170174
assertType('array<User>', $collection->getDictionary([new User]));

0 commit comments

Comments
 (0)