Вход Регистрация
Файл: src/vendor/way/generators/src/Way/Generators/Commands/PivotGeneratorCommand.php
Строк: 96
<?php namespace WayGeneratorsCommands;

use 
IlluminateConsoleCommand;
use 
SymfonyComponentConsoleInputInputOption;
use 
SymfonyComponentConsoleInputInputArgument;

class 
PivotGeneratorCommand extends Command {

    
/**
     * The console command name.
     *
     * @var string
     */
    
protected $name 'generate:pivot';

    
/**
     * The console command description.
     *
     * @var string
     */
    
protected $description 'Generate a pivot table';

    
/**
     * Create a pivot table migration
     */
    
public function fire()
    {
        list(
$tableOne$tableTwo) = $this->sortDesiredTables();

        
$this->call('generate:migration', [
            
'migrationName' => "create_{$tableOne}_{$tableTwo}_table",
            
'--fields' => $this->getMigrationFields($tableOne$tableTwo)
        ]);
    }

    
/**
     * Sort the provided pivot tables in alphabetical order
     *
     * @return array
     */
    
public function sortDesiredTables()
    {
        
$tables array_except(array_map('str_singular'$this->argument()), 'command');

        
sort($tables);

        return 
$tables;
    }

    
/**
     * Get the fields for the pivot migration.
     *
     * @param $tableOne
     * @param $tableTwo
     * @return array
     */
    
public function getMigrationFields($tableOne$tableTwo)
    {
        return 
implode(', ', [
            
"{$tableOne}_id:integer:unsigned:index",
            
"{$tableOne}_id:foreign:references('id'):on('" str_plural($tableOne) . "'):onDelete('cascade')",
            
"{$tableTwo}_id:integer:unsigned:index",
            
"{$tableTwo}_id:foreign:references('id'):on('" str_plural($tableTwo) . "'):onDelete('cascade')",
        ]);
    }

    
/**
     * Get the console command arguments.
     *
     * @return array
     */
    
protected function getArguments()
    {
        return [
            [
'tableOne'InputArgument::REQUIRED'Name of the first table'],
            [
'tableTwo'InputArgument::REQUIRED'Name of the second table']
        ];
    }

}
Онлайн: 0
Реклама