Ajax 调用 Eloquent Laravel 8 中的内部联接查询无效
Ajax call having Inner Join query in Eloquent Laravel 8 not working
我想在 Laravel 8 中使用内部联接从两个表中获取数据,并通过 Ajax 在前端将其显示为数据表。但是 ajax 调用返回内部服务器错误。
这是我的控制器
if(request()->ajax()) {
return datatables()->of(Machine::select("machine_base.id as id", "machine_base.machine_name as machine_name", "machine_base.machine_category as category_id", "item_category_base.category as category_name"))
->innerJoin("item_category_base", function($join){
$join->on("item_category_base.id", "=", "machine_base.machine_category");
})
->addIndexColumn()
->make(true);
}
return view('inventory.machine.machine_list');
Ajax请求:
$('#dataList').DataTable({
processing: true,
serverSide: true,
ajax: "/inventory/machine-list",
columns: [
{ data: 'DT_RowIndex', name: 'id' },
{ data: 'machine_name', name: 'machine_name'},
{ data: 'category_name', name: 'category_name'},
]
});
等效的 mysql 查询效果很好:
SELECT machine_base.id as id, machine_base.machine_name as machine_name, machine_base.machine_category as category_id, item_category_base.category as category_name FROM machine_base
INNER JOIN item_category_base ON item_category_base.id = machine_base.machine_category
Select * 使用 Eloquent 语句运行良好。我缺少什么请帮我找出来。提前致谢。
我认为你应该使用 join 而不是 innerjoin
if(request()->ajax()) {
return datatables()->of( Machine::select("machine_base.id as id", "machine_base.machine_name as machine_name", "machine_base.machine_category as category_id", "item_category_base.category as category_name")->join('item_category_base', 'item_category_base.id', '=', 'machine_base.machine_category'))
->addIndexColumn()
->make(true);
}
你可以在这里参考更多关于连接的信息
参考:https://laravel.com/docs/8.x/queries#inner-join-clause
我想在 Laravel 8 中使用内部联接从两个表中获取数据,并通过 Ajax 在前端将其显示为数据表。但是 ajax 调用返回内部服务器错误。
这是我的控制器
if(request()->ajax()) {
return datatables()->of(Machine::select("machine_base.id as id", "machine_base.machine_name as machine_name", "machine_base.machine_category as category_id", "item_category_base.category as category_name"))
->innerJoin("item_category_base", function($join){
$join->on("item_category_base.id", "=", "machine_base.machine_category");
})
->addIndexColumn()
->make(true);
}
return view('inventory.machine.machine_list');
Ajax请求:
$('#dataList').DataTable({
processing: true,
serverSide: true,
ajax: "/inventory/machine-list",
columns: [
{ data: 'DT_RowIndex', name: 'id' },
{ data: 'machine_name', name: 'machine_name'},
{ data: 'category_name', name: 'category_name'},
]
});
等效的 mysql 查询效果很好:
SELECT machine_base.id as id, machine_base.machine_name as machine_name, machine_base.machine_category as category_id, item_category_base.category as category_name FROM machine_base
INNER JOIN item_category_base ON item_category_base.id = machine_base.machine_category
Select * 使用 Eloquent 语句运行良好。我缺少什么请帮我找出来。提前致谢。
我认为你应该使用 join 而不是 innerjoin
if(request()->ajax()) {
return datatables()->of( Machine::select("machine_base.id as id", "machine_base.machine_name as machine_name", "machine_base.machine_category as category_id", "item_category_base.category as category_name")->join('item_category_base', 'item_category_base.id', '=', 'machine_base.machine_category'))
->addIndexColumn()
->make(true);
}
你可以在这里参考更多关于连接的信息 参考:https://laravel.com/docs/8.x/queries#inner-join-clause