php - 如何在 Laravel 8 Yajra 数据表中修复“顺序子句中的列‘created_at’不明确”
问题描述
我在我的 Laravel 项目中使用了 Yajra 数据表,但是在排序(也搜索)数据表时出现了问题。
order 子句中的列“created_at”不明确
我知道这个错误是因为其他表有'created_at'
列。
但我不知道如何解决它。
这是我的控制器:
public function index()
{
$partners = Partner::with(['term', 'user', 'invoices', 'bills', 'transactions']);
$users = User::get(['id', 'first_name', 'last_name']);
$terms = Term::get(['id', 'name']);
$banks = Bank::get(['id', 'name']);
return view('inc.partners', compact('partners', 'users', 'terms', 'banks'));
}
public function datatable()
{
$partners = Partner::with(['term', 'user', 'invoices', 'bills', 'transactions'])->latest();
return Datatables::of($partners)
->editColumn('full_name', function($partner) {
return '<a href="'. route('partners.show', $partner->id) .'">' . $partner->full_name . '</a>';
})->escapeColumns([])
->editColumn('term', function ($partner) {
return $partner->term->name;
})
->addColumn('type', function($partner) {
if ($partner->type == 'Bilateral') {
return '<span class="badge badge-pill badge-success">Bilateral</span>';
} elseif ($partner->type == 'Customer') {
return '<span class="badge badge-pill badge-info">Customer</span>';
} else {
return '<span class="badge badge-pill badge-primary">Supplier</span>';
}
})
->addColumn('user', function ($partner) {
return '<a href="'. route('users.show', $partner->user->id) .'">' . $partner->user->first_name . ' ' . $partner->user->last_name . '</a>';
})
->addColumn('balance', function ($partner) {
return ($partner->invoices->sum('actual_invoice_amount') - $partner->bills->sum('actual_bill_amount')) + ($partner->transactions->where('type', 'credit')->sum('final_amount') - $partner->transactions->where('type', 'debit')->sum('final_amount'));
})
->editColumn('status', function ($partner) {
if ($partner->status) {
return '<span class="badge badge-pill badge-primary">Active</span>';
} else {
return '<span class="badge badge-pill badge-secondary">InActive</span>';
}
})
->addColumn('action', function ($partner) {
return
'<a href="#" data-toggle="modal" id="edit-partner"
onclick="edit_partner(this)"
data-target="#edit_partner"
data-id="'.$partner->id.'"
data-action="'. route('partners.update', $partner->id) .'"
data-full_name="'.$partner->full_name . '"
data-code="'.$partner->code. '"
data-street1="'.$partner->street1. '"
data-country="'.$partner->country. '"
data-state="'.$partner->state. '"
data-city="'.$partner->city. '"
data-zip_code="'.$partner->zip_code. '"
data-type="'.$partner->type. '"
data-inbound_credit="' . $partner->inbound_credit . '"
data-outbound_credit="' . $partner->outbound_credit . '"
data-notice_contacts="' . $partner->notice_contacts . '"
data-status="' . $partner->status . '"
data-credit="' . $partner->credit . '"
data-debit="' . $partner->debit . '"
data-user_id="' . $partner->user_id . '"
data-term_id="' . $partner->term_id . '"
><i class="icon-pencil7"></i></a>
<a href="'. route('partners.destroy', $partner->id) .'" data-toggle="modal"
onclick="delete_partner('.$partner->id.')"
><i class="icon-trash text-danger"></i></a>';
})
->make(true);
}
我的数据表脚本:
$(function() {
let partnersdatatable = $('#partnersdatatable-table').DataTable({
pageLength: 100,
processing: true,
serverSide: true,
ajax: '{{ route('partners.datatable') }}',
columns: [{
data: 'code',
name: 'code'
},
{
data: 'full_name',
name: 'full_name'
},
{
data: 'term',
name: 'term.name'
},
{
data: 'inbound_credit',
name: 'inbound_credit'
},
{
data: 'outbound_credit',
name: 'outbound_credit'
},
{
data: 'user',
name: 'user.first_name'
},
{
data: 'type',
name: 'type'
},
{
data: 'balance',
name: 'balance'
},
{
data: 'status',
name: 'status'
},
{
data: 'action',
name: 'action',
orderable: false,
searchable: false
},
],
lengthMenu: [
[10, 50, 100, 250, 3000, 5000],
[10, 50, 100, 250, 3000, 5000]
],
buttons: [{
extend: 'colvis',
text: '<i class="icon-three-bars"></i>',
className: 'btn bg-blue btn-icon dropdown-toggle'
}]
});
$('.filter-input').keyup(function() {
partnersdatatable.column($(this).data('column')).search($(this).val()).draw();
});
});
更新 1
这是错误图片:
这个错误几乎存在于我所有的数据表中。
如何修复排序和搜索错误?
解决方案
在哪一行导致错误。可能要追溯到另一个班级?通常要修复不明确的列名,只需在列名前添加表名,例如 users.created_at 而不是 created_at。
推荐阅读
- css - 小心粘贴背景图片
- swift - UIPageViewController 添加为子视图时无法识别滑动
- sql - Teradata - 在不涉及用户的情况下授予对用户表的访问权限
- java - 如何使用 IntStream 将 String 和 Integer 元素放入 LinkedHashMap?
- html - 如何使文本溢出多行,其中最后一行有省略号而不仅仅是第一行?
- c++ - 由于在 C++ 范围内查找完美正方形时出现超时错误而终止
- owl - 通过 HermiT 的 Protege 中的 SubClassOf 和 EquivalentTo 了解推理的差异
- java - JPA坚持在级联孩子时插入不正确的id值
- r - 将字母显示为 geom_text 图例的关键字形,而不是默认的“a”
- scala - sbt 发布到 Maven 中心失败,没有公钥错误