Вход Регистрация
Файл: vendor/laravel/framework/src/Illuminate/Database/Eloquent/Factories/Relationship.php
Строк: 98
<?php

namespace IlluminateDatabaseEloquentFactories;

use 
IlluminateDatabaseEloquentModel;
use 
IlluminateDatabaseEloquentRelationsBelongsToMany;
use 
IlluminateDatabaseEloquentRelationsHasOneOrMany;
use 
IlluminateDatabaseEloquentRelationsMorphOneOrMany;

class 
Relationship
{
    
/**
     * The related factory instance.
     *
     * @var IlluminateDatabaseEloquentFactoriesFactory
     */
    
protected $factory;

    
/**
     * The relationship name.
     *
     * @var string
     */
    
protected $relationship;

    
/**
     * Create a new child relationship instance.
     *
     * @param  IlluminateDatabaseEloquentFactoriesFactory  $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  IlluminateDatabaseEloquentModel  $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));
        }
    }

    
/**
     * Specify the model instances to always use when creating relationships.
     *
     * @param  IlluminateSupportCollection  $recycle
     * @return $this
     */
    
public function recycle($recycle)
    {
        
$this->factory $this->factory->recycle($recycle);

        return 
$this;
    }
}
Онлайн: 0
Реклама