Subversion-Projekte lars-tiefland.laravel_shop

Revision

Revision 150 | Ganze Datei anzeigen | Leerzeichen ignorieren | Details | Blame | Letzte Änderung | Log anzeigen | RSS feed

Revision 150 Revision 399
Zeile 22... Zeile 22...
22
     *
22
     *
23
     * @template TFindDefault
23
     * @template TFindDefault
24
     *
24
     *
25
     * @param  mixed  $key
25
     * @param  mixed  $key
26
     * @param  TFindDefault  $default
26
     * @param  TFindDefault  $default
27
     * @return static<TKey|TModel>|TModel|TFindDefault
27
     * @return static<TKey, TModel>|TModel|TFindDefault
28
     */
28
     */
29
    public function find($key, $default = null)
29
    public function find($key, $default = null)
30
    {
30
    {
31
        if ($key instanceof Model) {
31
        if ($key instanceof Model) {
32
            $key = $key->getKey();
32
            $key = $key->getKey();
Zeile 42... Zeile 42...
42
            }
42
            }
Zeile 43... Zeile 43...
43
 
43
 
44
            return $this->whereIn($this->first()->getKeyName(), $key);
44
            return $this->whereIn($this->first()->getKeyName(), $key);
Zeile 45... Zeile 45...
45
        }
45
        }
46
 
-
 
47
        return Arr::first($this->items, function ($model) use ($key) {
-
 
48
            return $model->getKey() == $key;
46
 
Zeile 49... Zeile 47...
49
        }, $default);
47
        return Arr::first($this->items, fn ($model) => $model->getKey() == $key, $default);
50
    }
48
    }
51
 
49
 
Zeile 231... Zeile 229...
231
 
229
 
232
        if (is_string(reset($relation))) {
230
        if (is_string(reset($relation))) {
233
            $relation = reset($relation);
231
            $relation = reset($relation);
Zeile 234... Zeile -...
234
        }
-
 
235
 
232
        }
236
        $models->filter(function ($model) use ($name) {
-
 
Zeile 237... Zeile 233...
237
            return ! is_null($model) && ! $model->relationLoaded($name);
233
 
238
        })->load($relation);
234
        $models->filter(fn ($model) => ! is_null($model) && ! $model->relationLoaded($name))->load($relation);
239
 
235
 
Zeile 259... Zeile 255...
259
     */
255
     */
260
    public function loadMorph($relation, $relations)
256
    public function loadMorph($relation, $relations)
261
    {
257
    {
262
        $this->pluck($relation)
258
        $this->pluck($relation)
263
            ->filter()
259
            ->filter()
264
            ->groupBy(function ($model) {
-
 
265
                return get_class($model);
260
            ->groupBy(fn ($model) => get_class($model))
266
            })
-
 
267
            ->each(function ($models, $className) use ($relations) {
-
 
268
                static::make($models)->load($relations[$className] ?? []);
261
            ->each(fn ($models, $className) => static::make($models)->load($relations[$className] ?? []));
269
            });
-
 
Zeile 270... Zeile 262...
270
 
262
 
271
        return $this;
263
        return $this;
Zeile 272... Zeile 264...
272
    }
264
    }
Zeile 280... Zeile 272...
280
     */
272
     */
281
    public function loadMorphCount($relation, $relations)
273
    public function loadMorphCount($relation, $relations)
282
    {
274
    {
283
        $this->pluck($relation)
275
        $this->pluck($relation)
284
            ->filter()
276
            ->filter()
285
            ->groupBy(function ($model) {
-
 
286
                return get_class($model);
277
            ->groupBy(fn ($model) => get_class($model))
287
            })
-
 
288
            ->each(function ($models, $className) use ($relations) {
-
 
289
                static::make($models)->loadCount($relations[$className] ?? []);
278
            ->each(fn ($models, $className) => static::make($models)->loadCount($relations[$className] ?? []));
290
            });
-
 
Zeile 291... Zeile 279...
291
 
279
 
292
        return $this;
280
        return $this;
Zeile 293... Zeile 281...
293
    }
281
    }
Zeile 305... Zeile 293...
305
        if (func_num_args() > 1 || $this->useAsCallable($key)) {
293
        if (func_num_args() > 1 || $this->useAsCallable($key)) {
306
            return parent::contains(...func_get_args());
294
            return parent::contains(...func_get_args());
307
        }
295
        }
Zeile 308... Zeile 296...
308
 
296
 
309
        if ($key instanceof Model) {
297
        if ($key instanceof Model) {
310
            return parent::contains(function ($model) use ($key) {
-
 
311
                return $model->is($key);
-
 
312
            });
298
            return parent::contains(fn ($model) => $model->is($key));
Zeile 313... Zeile 299...
313
        }
299
        }
314
 
-
 
315
        return parent::contains(function ($model) use ($key) {
-
 
316
            return $model->getKey() == $key;
300
 
Zeile 317... Zeile 301...
317
        });
301
        return parent::contains(fn ($model) => $model->getKey() == $key);
318
    }
302
    }
319
 
303
 
320
    /**
304
    /**
321
     * Get the array of primary keys.
305
     * Get the array of primary keys.
322
     *
306
     *
323
     * @return array<int, array-key>
307
     * @return array<int, array-key>
324
     */
308
     */
325
    public function modelKeys()
-
 
326
    {
-
 
327
        return array_map(function ($model) {
309
    public function modelKeys()
Zeile 328... Zeile 310...
328
            return $model->getKey();
310
    {
329
        }, $this->items);
311
        return array_map(fn ($model) => $model->getKey(), $this->items);
330
    }
312
    }
Zeile 356... Zeile 338...
356
     */
338
     */
357
    public function map(callable $callback)
339
    public function map(callable $callback)
358
    {
340
    {
359
        $result = parent::map($callback);
341
        $result = parent::map($callback);
Zeile 360... Zeile 342...
360
 
342
 
361
        return $result->contains(function ($item) {
-
 
362
            return ! $item instanceof Model;
-
 
363
        }) ? $result->toBase() : $result;
343
        return $result->contains(fn ($item) => ! $item instanceof Model) ? $result->toBase() : $result;
Zeile 364... Zeile 344...
364
    }
344
    }
365
 
345
 
366
    /**
346
    /**
Zeile 376... Zeile 356...
376
     */
356
     */
377
    public function mapWithKeys(callable $callback)
357
    public function mapWithKeys(callable $callback)
378
    {
358
    {
379
        $result = parent::mapWithKeys($callback);
359
        $result = parent::mapWithKeys($callback);
Zeile 380... Zeile 360...
380
 
360
 
381
        return $result->contains(function ($item) {
-
 
382
            return ! $item instanceof Model;
-
 
383
        }) ? $result->toBase() : $result;
361
        return $result->contains(fn ($item) => ! $item instanceof Model) ? $result->toBase() : $result;
Zeile 384... Zeile 362...
384
    }
362
    }
385
 
363
 
386
    /**
364
    /**
Zeile 401... Zeile 379...
401
            ->with(is_string($with) ? func_get_args() : $with)
379
            ->with(is_string($with) ? func_get_args() : $with)
402
            ->whereIn($model->getKeyName(), $this->modelKeys())
380
            ->whereIn($model->getKeyName(), $this->modelKeys())
403
            ->get()
381
            ->get()
404
            ->getDictionary();
382
            ->getDictionary();
Zeile 405... Zeile -...
405
 
-
 
406
        return $this->filter(function ($model) use ($freshModels) {
383
 
407
            return $model->exists && isset($freshModels[$model->getKey()]);
-
 
408
        })
-
 
409
        ->map(function ($model) use ($freshModels) {
384
        return $this->filter(fn ($model) => $model->exists && isset($freshModels[$model->getKey()]))
410
            return $freshModels[$model->getKey()];
-
 
411
        });
385
            ->map(fn ($model) => $freshModels[$model->getKey()]);
Zeile 412... Zeile 386...
412
    }
386
    }
413
 
387
 
414
    /**
388
    /**
Zeile 582... Zeile 556...
582
     */
556
     */
Zeile 583... Zeile 557...
583
 
557
 
584
    /**
558
    /**
585
     * Count the number of items in the collection by a field or using a callback.
559
     * Count the number of items in the collection by a field or using a callback.
586
     *
560
     *
587
     * @param  (callable(TValue, TKey): array-key)|string|null  $countBy
561
     * @param  (callable(TModel, TKey): array-key)|string|null  $countBy
588
     * @return \Illuminate\Support\Collection<array-key, int>
562
     * @return \Illuminate\Support\Collection<array-key, int>
589
     */
563
     */
590
    public function countBy($countBy = null)
564
    public function countBy($countBy = null)
591
    {
565
    {
Zeile 674... Zeile 648...
674
 
648
 
675
    /**
649
    /**
676
     * Get the comparison function to detect duplicates.
650
     * Get the comparison function to detect duplicates.
677
     *
651
     *
678
     * @param  bool  $strict
652
     * @param  bool  $strict
679
     * @return callable(TValue, TValue): bool
653
     * @return callable(TModel, TModel): bool
680
     */
654
     */
681
    protected function duplicateComparator($strict)
655
    protected function duplicateComparator($strict)
682
    {
-
 
683
        return function ($a, $b) {
656
    {
684
            return $a->is($b);
-
 
685
        };
657
        return fn ($a, $b) => $a->is($b);
Zeile 686... Zeile 658...
686
    }
658
    }
687
 
659
 
688
    /**
660
    /**
Zeile 799... Zeile 771...
799
            throw new LogicException('Unable to create query for empty collection.');
771
            throw new LogicException('Unable to create query for empty collection.');
800
        }
772
        }
Zeile 801... Zeile 773...
801
 
773
 
Zeile 802... Zeile 774...
802
        $class = get_class($model);
774
        $class = get_class($model);
803
 
-
 
804
        if ($this->filter(function ($model) use ($class) {
-
 
805
            return ! $model instanceof $class;
775
 
806
        })->isNotEmpty()) {
776
        if ($this->filter(fn ($model) => ! $model instanceof $class)->isNotEmpty()) {
Zeile 807... Zeile 777...
807
            throw new LogicException('Unable to create query for collection with mixed types.');
777
            throw new LogicException('Unable to create query for collection with mixed types.');
808
        }
778
        }