
Как добавить диаграммы в Laravel 5 с помощью ChartJS — главная тема сегодняшнего обсуждения. В веб-приложении реального времени нам приходится иметь дело с диаграммами. Если вы работаете в сфере финансов, то диаграммы подобны кислороду. Вы не можете думать ни о каком анализе без графиков. Вот почему я создаю пример того, как вы можете добавлять диаграммы в веб-приложение Laravel 5.
☞ Создание веб-приложения с помощью VueJS, Spring Framework и MongoDB
Шаг 1
Создайте один проект Laravel, введя следующую команду.
composer create-project laravel/laravel LaravelCharts --prefer-dist
Перейдите в phpMyAdmin и создайте одну базу данных.
Переключитесь в редактор и отредактируйте файл .env, добавив в него свои учетные данные базы данных.
php artisan migrate
Шаг 2
Нам нужно создать один файл контроллера для управления представлениями и данными. Итак, перейдите в терминал и введите следующую команду.
php artisan make:controller StockController --resource
Создайте одну миграцию и модель также с помощью следующей команды.
php artisan make:model Stock -m
Перейдите к этому файлу миграции, и нам нужно добавить новые поля в таблицу stocks. Замените мой код своим файлом миграции.
<?phpuse Illuminate\Support\Facades\Schema; use Illuminate\Database\Schema\Blueprint; use Illuminate\Database\Migrations\Migration;class CreateStocksTable extends Migration { /** * Run the migrations. * * @return void */ public function up() { Schema::create('stocks', function (Blueprint $table) { $table->increments('id'); $table->string('stockName'); $table->integer('stockPrice'); $table->integer('stockYear'); $table->timestamps(); }); }/** * Reverse the migrations. * * @return void */ public function down() { Schema::dropIfExists('stocks'); } }
Выполните следующую команду.
php artisan migrate
Перейдите к файлу routes ›› web.php и добавьте несколько маршрутов, касающихся нашего приложения.
<?php// web.phpRoute::get('stock/add','StockController@create'); Route::post('stock/add','StockController@store');
Перейдите к StockController и верните представление акций из функции create().
<?php// StockController.php/** * Show the form for creating a new resource. * * @return \Illuminate\Http\Response */ public function create() { return view('Stock'); }
Создайте одну форму для ввода данных в базу данных. Мы создаем диаграмму анализа фондового рынка. Итак, мы сравниваем цену акции с ее периодом. Сейчас мы создаем одну форму.
<!-- Stock.blade.php --><!doctype html> <html lang="{{ config('app.locale') }}"> <head> <meta charset="utf-8"> <meta http-equiv="X-UA-Compatible" content="IE=edge"> <meta name="viewport" content="width=device-width, initial-scale=1"><title>Laravel</title><!-- Fonts --> <link href="{{asset('css/app.css')}}" rel="stylesheet" type="text/css"> <link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/bootstrap-select/1.12.3/css/bootstrap-select.min.css"> </head> <body> <div class="container"> <br /> <form action="{{url('stock/add')}}" method="post"> {{csrf_field()}} <div class="form-group"> <label for="stockName">Stock Name:</label> <input type="text" class="form-control" id="stockName" name="stockName"> </div> <div class="form-group"> <label for="stockPrice">Stock Price:</label> <input type="text" class="form-control" id="stockPrice" name="stockPrice"> </div> <div class="form-group"> <label for="stockPrice">Stock Year:</label> <select class="selectpicker" name="stockYear"> <option value="1991">1991</option> <option value="1992">1992</option> <option value="1993">1993</option> <option value="1994">1994</option> <option value="1995">1995</option> <option value="1996">1996</option> </select> </div> <button type="submit" class="btn btn-primary">Submit</button> </form> </div> <script src="https://ajax.googleapis.com/ajax/libs/jquery/3.2.1/jquery.min.js"></script> <script src="https://maxcdn.bootstrapcdn.com/bootstrap/3.3.7/js/bootstrap.min.js"></script> <script src="https://cdnjs.cloudflare.com/ajax/libs/bootstrap-select/1.12.3/js/bootstrap-select.min.js" charset="utf-8"></script> </body> </html>
Теперь запустите сервер, введя следующую команду.
php artisan serve
Перейдите по этому адресу: http://localhost:8000/stock/add
Шаг 3
Чтобы предотвратить исключение массового присваивания, нам нужно добавить защищенное поле $fillable и заполнить его массивом столбцов, необходимых для хранения данных. Перейдите к модели Stock.php и заполните массив $fillable.
<?php// Stock.phpnamespace App;use Illuminate\Database\Eloquent\Model;class Stock extends Model { protected $fillable = ['stockName', 'stockPrice', 'stockYear']; }
Следующим шагом является сохранение значений в базе данных.
<?php// StockController.php/** * Store a newly created resource in storage. * * @param \Illuminate\Http\Request $request * @return \Illuminate\Http\Response */ public function store(Request $request) { $stock = new Stock([ 'stockName' => $request->get('stockName'), 'stockPrice' => $request->get('stockPrice'), 'stockYear' => $request->get('stockYear'), ]); $stock->save();return redirect('stocks'); }
Следующим шагом будет создание индексного представления.
<!-- index.blade.php --><!doctype html> <html lang="{{ config('app.locale') }}"> <head> <meta charset="utf-8"> <meta http-equiv="X-UA-Compatible" content="IE=edge"> <meta name="viewport" content="width=device-width, initial-scale=1"><title>Laravel</title><!-- Fonts --> <link href="{{asset('css/app.css')}}" rel="stylesheet" type="text/css"> <link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/bootstrap-select/1.12.3/css/bootstrap-select.min.css"> </head> <body> <div class="container"> <br /> INDEX PAGE </div> <script src="https://ajax.googleapis.com/ajax/libs/jquery/3.2.1/jquery.min.js"></script> <script src="https://maxcdn.bootstrapcdn.com/bootstrap/3.3.7/js/bootstrap.min.js"></script> <script src="https://cdnjs.cloudflare.com/ajax/libs/bootstrap-select/1.12.3/js/bootstrap-select.min.js" charset="utf-8"></script> </body> </html>
Кроме того, нам нужно добавить маршрут для представления индекса.
// web.phpRoute::get('stocks','StockController@index');
Возвращает представление индексной функции.
// StockController.php/** * Display a listing of the resource. * * @return \Illuminate\Http\Response */ public function index() { return view('index'); }
Шаг: 4
Теперь нам нужно отобразить диаграмму на главной странице. В этом примере я использовал гистограммы. Поэтому, если вы хотите узнать больше о типах, следите за обновлениями на моем веб-сайте, так как я буду размещать один за другим типы диаграмм.
Гистограммы в Laravel
<!-- index.blade.php --><!doctype html> <html lang="{{ config('app.locale') }}"> <head> <meta charset="utf-8"> <meta http-equiv="X-UA-Compatible" content="IE=edge"> <meta name="viewport" content="width=device-width, initial-scale=1"><title>Laravel</title><!-- Fonts --> <link href="{{asset('css/app.css')}}" rel="stylesheet" type="text/css"> <link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/bootstrap-select/1.12.3/css/bootstrap-select.min.css"> </head> <body> <div class="row"> <div class="col-md-10 col-md-offset-1"> <div class="panel panel-default"> <div class="panel-heading"><b>Charts</b></div> <div class="panel-body"> <canvas id="canvas" height="280" width="600"></canvas> </div> </div> </div> </div> <script src="https://ajax.googleapis.com/ajax/libs/jquery/3.2.1/jquery.min.js"></script> <script src="https://maxcdn.bootstrapcdn.com/bootstrap/3.3.7/js/bootstrap.min.js"></script> <script src="https://cdnjs.cloudflare.com/ajax/libs/bootstrap-select/1.12.3/js/bootstrap-select.min.js" charset="utf-8"></script> <script src="https://cdnjs.cloudflare.com/ajax/libs/Chart.js/2.6.0/Chart.bundle.js" charset="utf-8"></script> <script> var url = "{{url('stock/chart')}}"; var Years = new Array(); var Labels = new Array(); var Prices = new Array(); $(document).ready(function(){ $.get(url, function(response){ response.forEach(function(data){ Years.push(data.stockYear); Labels.push(data.stockName); Prices.push(data.stockPrice); }); var ctx = document.getElementById("canvas").getContext('2d'); var myChart = new Chart(ctx, { type: 'bar', data: { labels:Years, datasets: [{ label: 'Infosys Price', data: Prices, borderWidth: 1 }] }, options: { scales: { yAxes: [{ ticks: { beginAtZero:true } }] } } }); }); }); </script> </body> </html>
Теперь у меня есть запрос «Использовать Ajax» для извлечения данных из базы данных. Итак, сначала мне нужно определить один маршрут для этого, и я публикую код маршрутизации для него.
// web.php<?php/* |-------------------------------------------------------------------------- | Web Routes |-------------------------------------------------------------------------- | | Here is where you can register web routes for your application. These | routes are loaded by the RouteServiceProvider within a group which | contains the "web" middleware group. Now create something great! | */Route::get('/', function () { return view('welcome'); });Route::get('stock/add','StockController@create'); Route::post('stock/add','StockController@store');Route::get('stocks','StockController@index'); Route::get('stock/chart','StockController@chart');
Нам нужно закодировать функцию диаграммы StockController. Я только что создал образец диаграммы Индийской фондовой компании под названием Infosys.
<?php// StockController.php/** * Fetch the particular company details * @return json response */ public function chart() { $result = \DB::table('stocks') ->where('stockName','=','Infosys') ->orderBy('stockYear', 'ASC') ->get(); return response()->json($result); }
Шаг: 5
Если вы правильно включили все библиотеки JS, а также у вас есть правильные значения в базе данных в отношении диаграмм, перейдите по следующему URL-адресу.
http://localhost:8000/stocks
Если вы ничего не видите, перейдите сначала по этому URL-адресу.
http://локальный:8000/сток/добавить

Добавьте некоторые акции и их значения в базу данных по годам. Потом снова по маршруту.

Скачать проект на Github
Шаги по использованию кода Github
- Клонируйте репо в свой локальный.
- Перейдите в корень проекта и выполните команду «обновление композитора».
- Отредактируйте файл .env и используйте свои учетные данные базы данных MySQL.
- Я использовал компанию «Infosys», поэтому, если вы хотите использовать эту диаграмму, используйте либо мою базу данных, поскольку я также помещаю файл stocks.sql в корень проект на GitHub или вам нужно изменить этот запрос на выборку данных, чтобы использовать ваш элемент или компанию так, как вы хотите.
- Теперь нам нужно загрузить сервер Laravel, поэтому запустите «php artisan serve».
- Если вы используете мою базу данных, перейдите по следующему URL-адресу: http://localhost:8000/stocks.
- Если нет, то перейдите по этому URL-адресу: http://localhost:8000/stock/add
- Теперь добавьте акции конкретной компании
- Снова перейдите по этому URL-адресу: http://localhost:8000/stocks
Предложить
☞ Vue JS 2 — Полное руководство (включая Vuex)
☞ Vue JS: от новичка до профессионала
☞ Изучите введение Vue JS в простой реактивный JavaScript