Я разрабатываю клиентское портальное приложение, используя Angular-7 в качестве внешнего интерфейса и Laravel-5.8. У меня есть таблица с именем trips со следующими полями: id, client_id, destination. Я пытаюсь получить 5 лучших пунктов назначения.
DashboardController.php
<?php
namespace App\Http\Controllers;
use Illuminate\Http\Request;
use Illuminate\Support\Facades\Auth;
use Illuminate\Support\Facades\DB;
use Carbon\Carbon;
use App\User;
use Illuminate\Support\Facades\Hash;
use Illuminate\Support\Facades\Validator;
use App\Trip;
use App\Client;
class DashboardController extends Controller
{
public function getTopDestination(Request $request)
{
$user = Auth::user();
$userClientId = Auth::user()->client_id;
try{
if(Auth::user()->client_id == 'ABC')
{
$destination = Trip::withCount('trips as destination_count')
->orderBy('destination_count', 'desc')
->take(5)
->get();
}
else
{
$destination = Trip::withCount('trips as destination_count')
->where('client_id', $userClientId)
->orderBy('destination_count', 'desc')
->take(5)
->get();
}
return response()->json($destination, 200);
}
catch(QueryException $e)
{
$errorCode = $e->errorInfo[1];
return response()->json($errorCode);
}
}
}
navdashboard.component.ts
import {dashboard2} from 'src/assets/dist/js/pages/dashboard2.js';
import { Component, OnInit, NgZone } from '@angular/core';
import { ApiService } from 'src/app/shared/services/api.service';
import { TokenService } from 'src/app/shared/services/token.service';
import { RolesCheckService } from 'src/app/shared/services/roles-check.service';
import { SnotifyService } from 'ng-snotify';
import { HttpClient } from '@angular/common/http';
import { Router } from '@angular/router';
import {NgbPaginationConfig} from '@ng-bootstrap/ng-bootstrap';
import swal from 'sweetalert2';
import { FormControl } from '@angular/forms';
declare var $;
@Component({
selector: 'app-navdashboard',
templateUrl: './navdashboard.component.html',
styleUrls: ['./navdashboard.component.scss']
})
export class NavdashboardComponent implements OnInit {
topdestination = null;
headers = { //Token for API Authorization
'Authorization' : this.token.get(),
'X-Requested-With' : 'XMLHttpRequest'
}
constructor(
private pg: NgbPaginationConfig,
private token: TokenService,
private http: HttpClient,
private router: Router,
private api: ApiService,
private zone: NgZone,
private notify: SnotifyService
) { }
ngOnInit() {
window.dispatchEvent(new Event('load'));
window.dispatchEvent(new Event('resize'));
$(dashboard2);
document.body.className = 'skin-blue sidebar-mini';
this.notify.clear();
this.notify.info("Loading...", {timeout: 0});
this.api.get('getTopDestination', this.headers).subscribe(
data => {console.log(data), this.topdestination = data; this.datahandlertopdestination(data)}
)
}
datahandlertopdestination(data){
console.log(data.data);
this.notify.clear();
this.topdestination = data.data;
}
}
navdashboard.cmponent.html
<div class="row">
<div class="col-xs-12">
<div class="box">
<div class="box-body">
<table id="example2" class="table table-bordered table-hover table-striped table-condesed">
<thead>
<tr>
<th width="5%">#</th>
<th scope="col">Destination</th>
</tr>
</thead>
<tbody>
<tr *ngFor="let topdestinations of topdestination; let i = index">
<td>{{i + 1}}</td>
<td>{{ topdestinations.destination }}</td>
</tr>
</tbody>
</table>
</div>
</div>
</div>
</div>
Класс модели для поездок - Trip.
Когда я загрузил страницу, я ожидал увидеть пять лучших мест назначения. Но я получил эту ошибку:
сообщение: «Вызов неопределенного метода App \ Trip :: trips ()»
Как мне его решить?