如何使用自定义artisan命令从数据库中打印行

问题描述 投票:0回答:1

我试图使用Laravel中的自定义artisan命令从第二个数据库中获取一行。现在我想打印查询的结果,但我一直收到错误。我将不胜感激任何帮助。

我设置了两个数据库的连接,它们连接并运行没有问题。我正在使用的表称为person,包含多个列,如name,surname,person_id(自动增量和主键)和ssn。我还创建了一个自定义artisan命令,在使用时从数据库中提取一行

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:尝试获取非对象的属性“name”

我也尝试了很多东西,但没有任何效果。再次感谢

<?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');
    }
}
php arrays database laravel artisan
1个回答
1
投票

像那样使用

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 
    }
© www.soinside.com 2019 - 2024. All rights reserved.