簡體   English   中英

Laravel顯示來自另一個數據庫連接的圖表

[英]Laravel displaying a chart from another database connection

如何從另一個數據庫連接(.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'),
        ]) : [],
    ]
]

在控制器中,您可以這樣說:

$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);

來自@Kevin Bui的更新回答

'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'),
        ]) : [],
    ]
]
In the controller, you can say something like:

$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',compact('chart','count'));;

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM