我想顯示一個餅圖,其中包含基于預(yù)訂狀態(tài)的預(yù)訂數(shù)量。但問題是我的預(yù)訂表僅包含預(yù)訂狀態(tài) ID。當(dāng)我嘗試獲取數(shù)據(jù)時,它返回錯誤,其中“餅圖應(yīng)該有字符串類型的第一列”。預(yù)訂狀態(tài)的名稱位于另一個不同的表上。我對 Laravel 框架很陌生,所以有人可以給我任何從 2 個不同表獲取數(shù)據(jù)的指南嗎?這是我的控制器<?phpnamespace App\Http\Controllers;use Illuminate\Http\Request;use DB;class LaravelGoogleGraph extends Controller{ function index() { $data = DB::table('booking') ->select( DB::raw('base_booking_status_id as status'), DB::raw('count(*) as booking_id')) ->groupBy('status') ->get(); $array[] = ['Status', 'Total']; foreach($data as $key => $value) { $array[++$key] = [$value->status, $value->booking_id]; } return view('google_pie_chart')->with('status', json_encode($array)); }}?>這是我的刀片<!DOCTYPE html><html> <head> <title>Make Google Pie Chart in Laravel</title> <script src="https://ajax.googleapis.com/ajax/libs/jquery/3.1.0/jquery.min.js"></script> <script type="text/javascript" src="https://www.gstatic.com/charts/loader.js"></script> <link rel="stylesheet" href="https://maxcdn.bootstrapcdn.com/bootstrap/3.3.6/css/bootstrap.min.css" /> <style type="text/css"> .box{ width:800px; margin:0 auto; } </style> <script type="text/javascript"> var analytics = <?php echo $status; ?> google.charts.load('current', {'packages':['corechart']}); google.charts.setOnLoadCallback(drawChart); function drawChart() { var data = google.visualization.arrayToDataTable(analytics); var options = { title : 'Booking Status' }; var chart = new google.visualization.PieChart(document.getElementById('pie_chart')); chart.draw(data, options); } </script> </head> <body> <br /> <div class="container"> <h3 align="center">Booking Report</h3><br /> <div class="panel panel-default"> <div class="panel-heading"> <h3 class="panel-title">Booking Status</h3> </div> <div class="panel-body" align="center"> <div id="pie_chart" style="width:750px; height:450px;"> </div> </div> </div> </div> </body></html>
1 回答

RISEBY
TA貢獻(xiàn)1856條經(jīng)驗(yàn) 獲得超5個贊
您需要在查詢中進(jìn)行聯(lián)接。像這樣的東西:
$data = DB::table('booking')
? ?->select([
? ? ? 'booking.base_booking_status_id as status_id',
? ? ? 'base_booking_status.name as status_name',
? ? ? 'booking.id as booking_id',
? ? ])
? ? ->leftJoin('base_booking_status', 'booking.base_booking_status_id', '=', 'base_booking_status.id')
? ? ->groupBy('booking.status')
? ? ->get();
我對狀態(tài)表使用了名稱“base_booking_status”。您將需要更新它以匹配選擇列以及連接的第一個和第三個參數(shù)中另一個表的實(shí)際名稱。您還需要更新要顯示的列的名稱,我在此處將其稱為“名稱”。
- 1 回答
- 0 關(guān)注
- 132 瀏覽
添加回答
舉報
0/150
提交
取消