Create New Item
Item Type
File
Folder
Item Name
Search file in folder and subfolders...
Are you sure want to rename?
File Manager
/
vendor
/
laravel
/
framework
/
src
/
Illuminate
/
Database
/
Eloquent
/
Factories
:
Relationship.php
Advanced Search
Upload
New Item
Settings
Back
Back Up
Advanced Editor
Save
<?php namespace Illuminate\Database\Eloquent\Factories; use Illuminate\Database\Eloquent\Model; use Illuminate\Database\Eloquent\Relations\BelongsToMany; use Illuminate\Database\Eloquent\Relations\HasOneOrMany; use Illuminate\Database\Eloquent\Relations\MorphOneOrMany; class Relationship { /** * The related factory instance. * * @var \Illuminate\Database\Eloquent\Factories\Factory */ protected $factory; /** * The relationship name. * * @var string */ protected $relationship; /** * Create a new child relationship instance. * * @param \Illuminate\Database\Eloquent\Factories\Factory $factory * @param string $relationship * @return void */ public function __construct(Factory $factory, $relationship) { $this->factory = $factory; $this->relationship = $relationship; } /** * Create the child relationship for the given parent model. * * @param \Illuminate\Database\Eloquent\Model $parent * @return void */ public function createFor(Model $parent) { $relationship = $parent->{$this->relationship}(); if ($relationship instanceof MorphOneOrMany) { $this->factory->state([ $relationship->getMorphType() => $relationship->getMorphClass(), $relationship->getForeignKeyName() => $relationship->getParentKey(), ])->create([], $parent); } elseif ($relationship instanceof HasOneOrMany) { $this->factory->state([ $relationship->getForeignKeyName() => $relationship->getParentKey(), ])->create([], $parent); } elseif ($relationship instanceof BelongsToMany) { $relationship->attach($this->factory->create([], $parent)); } } }