Completed
Push — master ( f96e71...6f9e28 )
by recca
25:22 queued 24:08
created

Mysql::castArray()   A

Complexity

Conditions 1
Paths 1

Size

Total Lines 6

Duplication

Lines 0
Ratio 0 %

Code Coverage

Tests 3
CRAP Score 1

Importance

Changes 0
Metric Value
cc 1
nc 1
nop 1
dl 0
loc 6
ccs 3
cts 3
cp 1
crap 1
rs 10
c 0
b 0
f 0
1
<?php
2
3
namespace Recca0120\Terminal\Console\Commands;
4
5
use Illuminate\Database\DatabaseManager;
6
use Illuminate\Support\Arr;
7
use Symfony\Component\Console\Input\InputOption;
8
9
class Mysql extends Command
10
{
11
    /**
12
     * The console command name.
13
     *
14
     * @var string
15
     */
16
    protected $name = 'mysql';
17
18
    /**
19
     * The console command description.
20
     *
21
     * @var string
22
     */
23
    protected $description = 'mysql console';
24
25
    /**
26
     * $connection.
27
     *
28
     * @var \Illuminate\Database\DatabaseManager
29
     */
30
    protected $databaseManager;
31
32
    /**
33
     * __construct.
34
     *
35
     * @param \Illuminate\Database\DatabaseManager $databaseManager
36
     */
37 1
    public function __construct(DatabaseManager $databaseManager)
38
    {
39 1
        parent::__construct();
40
41 1
        $this->databaseManager = $databaseManager;
42 1
    }
43
44
    /**
45
     * Handle the command.
46
     *
47
     * @throws \InvalidArgumentException
48
     */
49 1
    public function handle()
50
    {
51 1
        $sql = $this->option('command');
52 1
        $connection = $this->databaseManager->connection($this->option('connection'));
53 1
        $rows = $this->castArray($connection->select($sql, [], true));
54 1
        $headers = array_keys(Arr::get($rows, 0, []));
55 1
        $this->table($headers, $rows);
56 1
    }
57
58
    /**
59
     * castArray.
60
     *
61
     * @param stdClass[] $rows
62
     * @return void
63
     */
64 1
    protected function castArray($rows)
65
    {
66
        return array_map(function ($row) {
67 1
            return (array) $row;
68 1
        }, $rows);
69
    }
70
71
    /**
72
     * Get the console command options.
73
     *
74
     * @return array
75
     */
76 1
    protected function getOptions()
77
    {
78
        return [
79 1
            ['command', null, InputOption::VALUE_REQUIRED],
80 1
            ['connection', null, InputOption::VALUE_OPTIONAL],
81
        ];
82
    }
83
}
84