2
Two days ago I’m banging head with a query in the database marrying tables and returning the sum of values, I can perform the query by the quiet Phpmyadmin.
Follows the query that works on Phpmyadmin:
Select sum(D.CargaHoraria) as CargaHorariaTotal, C.NomeCurso, C.CursoId, A.Imagem
from Curso C
inner join Disciplina D on D.CursoId = C.CursoId
inner join Area A on A.AreaId = C.AreaId
GROUP BY C.CursoId
It follows the same code on DB::select
of Laravel and I can’t get back.
DB::select("
Select sum(D.CargaHoraria) as CargaHorariaTotal, C.NomeCurso, C.CursoId, A.Imagem
from Curso C
inner join Disciplina D on D.CursoId = C.CursoId
inner join Area A on A.AreaId = C.AreaId
GROUP BY C.CursoId
");
The intention and the following, I have Courses that each course has several disciplines, and each discipline has its hourly charge, I need to do the sum of the hourly charges of the disciplines to obtain the cargaHorariaTotal
course.
But I’m not succeeding with the Laravel
.
Controller
<?php
namespace App\Http\Controllers;
use Illuminate\Http\Request;
use Response;
use App\CursoModel;
use DB;
class CursosController extends Controller
{
public function __construct(CursoModel $objeto)
{
//No Auth
$this->curso = $objeto;
}
public function CursosPosGraduacao()
{
return view('Cursos/CursosPosGraduacao');
}
public function CursosFormacaoPedagogica()
{
return view('Cursos/CursosFormacaoPedagogica');
}
public function CursosSegundaLicenciatura()
{
return view('Cursos/CursosSegundaLicenciatura');
}
public function CursoDetalhe()
{
return view('Cursos/CursoDetalhe');
}
public function retornarTodosOsCursos()
{
$Query = DB::select(DB::raw("
Select sum(D.CargaHoraria) as CargaHorariaTotal, C.NomeCurso, C.CursoId, A.Imagem
from Curso C
inner join Disciplina D on D.CursoId = C.CursoId
inner join Area A on A.AreaId = C.AreaId
GROUP BY C.CursoId
"));
return $Query;
}
}
Route
//Matricule
Route::group(['prefix'=>'api'], function(){
Route::group(['prefix'=>'Curso'],function(){
Route::get('retornarTodosOsCursos',['uses'=>'CursosController@retornarTodosOsCursos']);
});
});
Cursomodel
<?php
namespace App;
use Illuminate\Database\Eloquent\Model;
use Illuminate\Support\Facades\Auth;
use Illuminate\Support\Facades\Input;
use Hash;
use Response;
use DB;
class CursoModel extends Model
{
//
protected $primaryKey = 'CursoId';
protected $fillable = ['CursoId', 'AreaId', 'NomeCurso', 'DescricaoCurso', 'ImagemCurso', 'NumeroDoCurso', 'UsuarioId'];
public $table = 'Curso';
public function GetAllRepositorio()
{
return self::all();
}
public function PostRepositorio()
{
if (Auth::check()) { //verifica se tem usuario logado
$data = new CursoModel();
$data->fill(Input::all());
if (is_null($data)) {
return false;
}
//Confere se CursoId e maior que 0
if ($data["CursoId"] > 0) {
//Envia o registro para Atualizar ja que o mesmo tem CursoId
$data = $this->AtualizaRegistro($data["CursoId"]);
//Se salvar retorna true se não retorna falso
return $data;
}
$TodosOsCursos = self::all();
foreach ($TodosOsCursos as $key => $value) {
if ($value['NumeroDoCurso'] == $data['NumeroDoCurso'] || $value['NomeCurso'] == $data['NomeCurso']) {
return false;
}
}
$data['UsuarioId'] = Auth::user()->id;
return $data->save();
}
}
public function DeletarRepositorio($id)
{
$data = self::find($id);
if (is_null($data)) {
return false;
}
$data->delete();
return true;
}
public function AtualizaRegistro($CursoId)
{
if (Auth::check()) { //verifica se tem usuario logado
//Procura registro no banco pelo $id
$data = self::find($CursoId);
//Caso não encontrar registro no banco retorna falso, abortando a operação
if (is_null($data)) {
return false;
}
//Recebe todos os valores novos que chegaram
$input = Input::all();
//Atribui os valores novos no registro 'data' encontrados no banco
$data->fill($input);
//Atribui o usuario que executou a ultima ação no registro
$data['UsuarioId'] = Auth::user()->id;
//Salva os registros no banco e retorna se atalizou ou não
return $data->save();
}
}
public function RetornaListaDeCursoPorArea($AreaId){
$listaDeCursoPorArea = DB::table('Curso')->where('AreaId', $AreaId)->get();
return $listaDeCursoPorArea;
}
}
If you put a
dd('Teste')
above the variable$Query
and enters the LINK does not show 'Test' ?– Diego Souza