我有两个表格,一个是车辆,另一个是道路税。
我的'vehicles'表有一个id & registration字段,它与我的'roadtax'表有关系,'roadtax'表有id,vehicle_id,validfrom & expires字段。我有一个一对多的关系,因为我的车辆将有多年的历史,当我对它们征税时
我需要最简单的方法来列出我所有的车辆的顺序,这将需要重新征税第一。
我最接近的是让我的车辆上市时,税收是由于到期。我真的很挣扎,让他们在我需要的顺序。我有一个基本的了解php和mysql,所以希望有人能照亮我需要关注的地方。我想我可以只是orderby到期列,就像我如何成功地通过注册订购一样。这是因为我过期字段来自关系表吗?
控制器
<?php
namespace App\Http\Controllers;
use Illuminate\Http\Request;
use App\Models\Road_tax;
use App\Models\Vehicle;
use Carbon\Carbon;
class DashboardController 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()
{
$road_taxes = Vehicle::with('latest_Road_Tax')->get()
return view('dashboard.index', compact('road_taxes'));
}
}
车辆型号
<?php
namespace App\Models;
use Illuminate\Database\Eloquent\Model;
class Vehicle extends Model
{
public function Road_taxes()
{
return $this->hasMany(Road_tax::class);
}
public function latest_Road_Tax()
{
return $this->hasOne(Road_tax::class)->latest("expires");
}
}
视图
@foreach($road_taxes as $road_tax)
<div class="dashboard-item-title">
<h6 style="font-weight:600; margin-bottom:0px;">{{$road_tax->registration}}</h6>
<span class="dashboard-item-body" style="margin-top:-10px;">
<small style="font-weight:300; color:grey;">Tax expires for this vehicle on</small>
<small style="font-weight:300"> | {{$road_tax->latest_Road_Tax->expires}}</small>
</span>
</div>
@endforeach
1条答案
按热度按时间pgpifvop1#
您可以使用
with()
方法并作为查询生成器传递。所以基本上你只需要一个关系
vehicle->hasMany(Road_tax::class)
您的模型应该是:
如果你想让每辆车都列出最近的道路税
您可以使用
with()
进行查询此方法将列出1与车辆相关的道路税