Code Duplication    Length = 12-13 lines in 2 locations

source/Spiral/ORM/Entities/Loader.php 2 locations

@@ 344-356 (lines=13) @@
341
     */
342
    public function loader($relation, array $options = [])
343
    {
344
        if (($position = strpos($relation, '.')) !== false) {
345
            //Chain of relations provided
346
            $nested = $this->loader(substr($relation, 0, $position), []);
347
348
            if (empty($nested) || !$nested instanceof self) {
349
                //todo: Think about the options
350
                throw new LoaderException(
351
                    "Only ORM loaders can be used to generate/configure chain of relation loaders."
352
                );
353
            }
354
355
            //Recursively (will work only with ORM loaders).
356
            return $nested->loader(substr($relation, $position + 1), $options);
357
        }
358
359
        if (!isset($this->schema[ORM::M_RELATIONS][$relation])) {
@@ 428-439 (lines=12) @@
425
        //We have to force joining method for full chain
426
        $options['method'] = self::JOIN;
427
428
        if (($position = strpos($relation, '.')) !== false) {
429
            //Chain of relations provided
430
            $nested = $this->joiner(substr($relation, 0, $position), []);
431
            if (empty($nested) || !$nested instanceof self) {
432
                //todo: DRY
433
                throw new LoaderException(
434
                    "Only ORM loaders can be used to generate/configure chain of relation joiners."
435
                );
436
            }
437
438
            //Recursively (will work only with ORM loaders).
439
            return $nested->joiner(substr($relation, $position + 1), $options);
440
        }
441
442
        if (!isset($this->schema[ORM::M_RELATIONS][$relation])) {