javascript - Laravel 显示来自另一个数据库连接的图表

标签 javascript php mysql laravel chart.js

如何从另一个数据库连接(.env 文件中的“mysql2”)在 laravel 中生成图表(可能是饼图或圆环图)?我知道如何从主数据库生成图表。但这次我没有迁移第二个数据库,因为它已经有表和数据了。我可以使用“dd”命令获取数据,但如果我在其中生成图表则是另一回事。请帮我做作业。

这是我的HomeController.php

<?php

namespace App\Http\Controllers;

use Illuminate\Http\Request;
use App\User;
use Illuminate\Support\Facades\DB;


use Charts;

class HomeController extends Controller
{
    /**
     * Create a new controller instance.
     *
     * @return void
     */
    public function __construct()
    {
        $this->middleware('auth');
    }

    /**
     * Show the application dashboard.
     *
     * @return \Illuminate\Contracts\Support\Renderable
     */
    public function index()
    {
        // //
        $count = User::count();

       $chart = Charts::database(User::all(),'line','highcharts')
                ->title('User Statistics')
                ->groupByYear(7)
                ->Width(0)
                ->ElementLabel('Total Users Registered')
                ->Responsive(true);



        return view('dashboard',['chart'=>$chart])->with('count', $count);
        // return view('dashboard', ['chart' => $chart]);


        // $count = User::count();
        // return View::make('dashboard')->with('count', $count);

        // return view('dashboard');
    }

    public function logout () {
        //logout user
        auth()->logout();
        // redirect to homepage
        return redirect('/coindeoro');
    }


    //FETCH DATA FROM THE SECOND DATABASE
    public function another(){
        // $arr_graph = \DB::connection('mysql2')->select("SELECT * FROM ico_stages WHERE id = ?", [1]);

        $arr_graph = \DB::connection('mysql2')->select("SELECT * FROM ico_stages WHERE id = ?", [1]);

        //DISPLAY
        dd($arr_graph);


    }
}

我的web.php

//dashboard
Route::get('/dashboard', 'HomeController@index')->name('dashboard');
//FETCH DATA FROM SECOND DB
Route::get('/another', 'HomeController@another')->name('another');
//for user logout
Route::get('/logout', 'HomeController@logout');
```

My **.env** file

```
APP_NAME=Laravel
APP_ENV=local
APP_KEY=base64:HoQcNyCc5KEGw4yjqpBIdKzTC+yeDoOJcerVMEVx+fs=
APP_DEBUG=true
APP_URL=http://localhost

LOG_CHANNEL=stack

DB_CONNECTION=mysql
DB_HOST=127.0.0.1
DB_PORT=3306
DB_DATABASE=adminpanel
DB_USERNAME=root
DB_PASSWORD=



DB_CONNECTION_SECOND=mysql2
DB_HOST_SECOND=127.0.0.1
DB_PORT_SECOND=3306
DB_DATABASE_SECOND=ricjac8_orocoin
DB_USERNAME_SECOND=root
DB_PASSWORD_SECOND=

BROADCAST_DRIVER=log
CACHE_DRIVER=file
QUEUE_CONNECTION=sync
SESSION_DRIVER=file
SESSION_LIFETIME=120

REDIS_HOST=127.0.0.1
REDIS_PASSWORD=null
REDIS_PORT=6379

MAIL_DRIVER=smtp
MAIL_HOST=smtp.mailtrap.io
MAIL_PORT=2525
MAIL_USERNAME=null
MAIL_PASSWORD=null
MAIL_ENCRYPTION=null

AWS_ACCESS_KEY_ID=
AWS_SECRET_ACCESS_KEY=
AWS_DEFAULT_REGION=us-east-1
AWS_BUCKET=

PUSHER_APP_ID=
PUSHER_APP_KEY=
PUSHER_APP_SECRET=
PUSHER_APP_CLUSTER=mt1

MIX_PUSHER_APP_KEY="${PUSHER_APP_KEY}"
MIX_PUSHER_APP_CLUSTER="${PUSHER_APP_CLUSTER}"
```

最佳答案

让我们在 config/database.php 中创建一个新的数据库连接:

'connections' => [
    'mysql' => [
        // ....
    ],
    'mysql2' => [
        'driver' => 'mysql',
        'url' => env('DATABASE_URL'),
        'host' => env('DB_HOST_SECOND', '127.0.0.1'),
        'port' => env('DB_PORT_SECOND', '3306'),
        'database' => env('DB_DATABASE_SECOND', 'forge'),
        'username' => env('DB_USERNAME_SECOND', 'forge'),
        'password' => env('DB_PASSWORD_SECOND', ''),
        // The followings are default Laravel settings, which could be redundant.
        'unix_socket' => env('DB_SOCKET', ''),
        'charset' => 'utf8mb4',
        'collation' => 'utf8mb4_unicode_ci',
        'prefix' => '',
        'prefix_indexes' => true,
        'strict' => true,
        'engine' => null,
        'options' => extension_loaded('pdo_mysql') ? array_filter([
        PDO::MYSQL_ATTR_SSL_CA => env('MYSQL_ATTR_SSL_CA'),
        ]) : [],
    ]
]

在 Controller 中,您可以这样说:

$chart = Charts::database(User::on('mysql2')->all(),'line','highcharts')
    ->title('User Statistics')
    ->groupByYear(7)
    ->Width(0)
    ->ElementLabel('Total Users Registered')
    ->Responsive(true);

return view('dashboard',['chart'=>$chart])->with('count', $count);

关于javascript - Laravel 显示来自另一个数据库连接的图表,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56660263/

相关文章:

javascript - 带有 AJAX、PHP、HTML 的 UTF-8 '?' 符号

mysql - 表可以使用父表的FK作为PK

javascript - 通过简单的JS强制iframe自动播放

javascript - Firefox Addon SDK - pageMod 更新 contentScriptOptions?

javascript - 如何在不移动内容的情况下删除导航栏上方的元素?

php - Facebook 热门共享网址,由用户使用间隔和 mysql 选择更新进行更新

java - 我面临这个问题 E/catch === : org. json.JSONException:SorrySignUpFirst 没有值

javascript - 将 select 的内容拆分到不同的字段中

php - 让 PHP 等待 python 脚本完成

javascript - 在 Android 设备上显示 div