PHP 8.3.31
Preview: HasOneThrough.php Size: 2.14 KB
/home/getspomw/royalsquad.us/vendor/laravel/framework/src/Illuminate/Database/Eloquent/Relations/HasOneThrough.php

<?php

namespace Illuminate\Database\Eloquent\Relations;

use Illuminate\Database\Eloquent\Collection as EloquentCollection;
use Illuminate\Database\Eloquent\Model;
use Illuminate\Database\Eloquent\Relations\Concerns\InteractsWithDictionary;
use Illuminate\Database\Eloquent\Relations\Concerns\SupportsDefaultModels;

/**
 * @template TRelatedModel of \Illuminate\Database\Eloquent\Model
 * @template TIntermediateModel of \Illuminate\Database\Eloquent\Model
 * @template TDeclaringModel of \Illuminate\Database\Eloquent\Model
 *
 * @extends \Illuminate\Database\Eloquent\Relations\HasOneOrManyThrough<TRelatedModel, TIntermediateModel, TDeclaringModel, ?TRelatedModel>
 */
class HasOneThrough extends HasOneOrManyThrough
{
    use InteractsWithDictionary, SupportsDefaultModels;

    /** @inheritDoc */
    public function getResults()
    {
        return $this->first() ?: $this->getDefaultFor($this->farParent);
    }

    /** @inheritDoc */
    public function initRelation(array $models, $relation)
    {
        foreach ($models as $model) {
            $model->setRelation($relation, $this->getDefaultFor($model));
        }

        return $models;
    }

    /** @inheritDoc */
    public function match(array $models, EloquentCollection $results, $relation)
    {
        $dictionary = $this->buildDictionary($results);

        // Once we have the dictionary we can simply spin through the parent models to
        // link them up with their children using the keyed dictionary to make the
        // matching very convenient and easy work. Then we'll just return them.
        foreach ($models as $model) {
            if (isset($dictionary[$key = $this->getDictionaryKey($model->getAttribute($this->localKey))])) {
                $value = $dictionary[$key];
                $model->setRelation(
                    $relation, reset($value)
                );
            }
        }

        return $models;
    }

    /**
     * Make a new related instance for the given model.
     *
     * @param  TDeclaringModel  $parent
     * @return TRelatedModel
     */
    public function newRelatedInstanceFor(Model $parent)
    {
        return $this->related->newInstance();
    }
}

Directory Contents

Dirs: 1 × Files: 16

Name Size Perms Modified Actions
Concerns DIR
- drwxrwxrwx 2025-09-17 06:53:01
Edit Download
10.57 KB lrw-rw-rw- 2025-09-17 06:53:01
Edit Download
46.36 KB lrw-rw-rw- 2025-09-17 06:53:01
Edit Download
1.69 KB lrw-rw-rw- 2025-09-17 06:53:01
Edit Download
2.53 KB lrw-rw-rw- 2025-09-17 06:53:01
Edit Download
3.64 KB lrw-rw-rw- 2025-09-17 06:53:01
Edit Download
16.62 KB lrw-rw-rw- 2025-09-17 06:53:01
Edit Download
24.51 KB lrw-rw-rw- 2025-09-17 06:53:01
Edit Download
2.14 KB lrw-rw-rw- 2025-09-17 06:53:01
Edit Download
1.95 KB lrw-rw-rw- 2025-09-17 06:53:01
Edit Download
3.88 KB lrw-rw-rw- 2025-09-17 06:53:01
Edit Download
4.58 KB lrw-rw-rw- 2025-09-17 06:53:01
Edit Download
4.46 KB lrw-rw-rw- 2025-09-17 06:53:01
Edit Download
12.08 KB lrw-rw-rw- 2025-09-17 06:53:01
Edit Download
6.05 KB lrw-rw-rw- 2025-09-17 06:53:01
Edit Download
468 B lrw-rw-rw- 2025-09-17 06:53:01
Edit Download
14.16 KB lrw-rw-rw- 2025-09-17 06:53:01
Edit Download

If ZipArchive is unavailable, a .tar will be created (no compression).