Я пытаюсь суммировать два значения из разных таблиц MySQL в контроллере и затем поместить результат в таблицу данных.
Скрипт, который вызывает контроллер
<script>
$(document).ready(function(){
var tabla1 = $('#art_table').DataTable({
"language": {
"url": "//cdn.datatables.net/plug-ins/1.10.19/i18n/Spanish.json"
},
processing: true,
serverSide: true,
ajax:{
url: "{{ route('ordenes.index') }}"},
columns:[
{
data: 'nombre_art',
name: 'nombre_art'
},
{
data: 'cantidad',
name: 'cantidad'
}
]
});
});
</script>
Код в контроллере
public function index()
{
if(request()->ajax())
{
$query = DB::table('orden_entrada_art')->select('*');
return datatables()->of($query)
//return datatables()->of(articulos::latest()->get())
->addIndexColumn()
->addColumn('cantidad', function($tot){
$tot = DB::table('orden_entrada_art')
->select(DB::raw("SUM(orden_entrada_art.cantidad) + SUM(orden_salida_art.cantidad) AS cantidad"))
->join('orden_salida_art', 'orden_entrada_art.nombre_art', '=', 'orden_salida_art.nombre_art') // ESTE SELECT
->where('orden_salida_art.nombre_art','=',$tot->nombre_art)
->groupBy('orden_entrada_art.nombre_art')
->orderByRaw('orden_entrada_art.nombre_art')
->get();
$t = $tot[0]->cantidad; // array solo agarra el id del select de arriba
return $t;
})
->make(true);
}
$arts = DB::table('articulos')->get();
return view('ordenes.ordenes',['arts'=>$arts]);
}
Я ожидаю, что результат будет результатом вычитания между двумя полями из разных таблиц MySQL