Как напечатать строку из базы данных с помощью пользовательской команды ремесленника - PullRequest
0 голосов
/ 17 февраля 2019

Я пытаюсь получить строку из второй базы данных с помощью специальной команды ремесленника в Laravel.Теперь я хочу напечатать результат запроса, но получаю сообщение об ошибке.Буду признателен за любую помощь.

Я установил соединение с двумя базами данных , и они подключены и работают без проблем.таблица, с которой я работаю, называется person и содержит несколько столбцов, таких как имя, фамилия, person_id (который является автоинкрементом и первичным ключом) и ssn.Я также создал собственную команду ремесленника, которая выбирает строку из базы данных при использовании

php artisan import-users:DB 12345678

и запроса

DB::connection('mysql2')->select('SELECT * FROM person WHERE ssn=?', [$ssn])

Результат запроса помещается в переменную $ user, и теперь я просто хочу распечатать его, но получаю ошибки.вот что я попробовал

$name = $user['name']; 

, который дает

ErrorException: неопределенный индекс: имя

$this->line($user[0]);

, который дает

ErrorException: объект класса stdClass не может быть преобразован в строку

$this->line($user->name);

, которая дает

ErrorException: при попытке получить имя свойства'необъектного

Я тоже много чего пробовал, но ничего не получалось.Еще раз спасибо

<?php
namespace App\Console\Commands;
use Illuminate\Console\Command;
use DB;

class ImportUsers extends Command{

    protected $signature = 'import-users:DB {ssn}';
    protected $description = 'import users from old database';

    public function __construct()
    {
        parent::__construct();
    }

    public function handle()
    {
        $ssn = $this->argument('ssn');
        $user = DB::connection('mysql2')->select('SELECT * FROM person WHERE 
            ssn=?', [$ssn]);
        $this->line($user->name);
        $this->info($ssn.' Done');
    }
}

1 Ответ

0 голосов
/ 17 февраля 2019

используется таким образом

for signle row
public function handle()
        {
            $ssn = $this->argument('ssn');
            $user = DB::connection('mysql2')->select('SELECT * FROM person WHERE 
                ssn=? limit 1', [$ssn]);

            if(isset($user[0])){
                 $this->line($user[0]->name); 
            }
            $this->info($ssn.' Done');
            $this->table($headers, $newUsers);
      }

для нескольких строк (массив)

public function handle()
    {
        $ssn = $this->argument('ssn');
        $user = DB::connection('mysql2')->select('SELECT * FROM person WHERE 
            ssn=?', [$ssn]);
         //$userNameArray = [];  //if you want to show name in table 
         if(count($user) > 0) {
           foreach($user as $item)  {
              $this->line($item->name);
              //$userNameArray[] = $item->name;
            }
        } 

       $this->info($ssn.' Done');
       //$this->table(['Name'],$userNameArray); //optionall 
    }
...