Ich habe eine Abfrage in laravel
, die gut funktioniert.Verwenden Sie IFNULL in Laravel
$subjects = $app->db->table('subjects')->LeftJoin('downloads', 'subjects.subjectID', '=', 'downloads.subject_id')
->where('universityID', $currentUser->universityID)->where('semesterID', $currentUser->semesterID)->where('courseID', $currentUser->courseID)
->select('subjects.subjectID', 'subjects.subjectName', 'subjects.price', 'downloads.is_download')
->orderBy('subjectID')
->get();
Es gibt nur ein Problem, dass is_download
null kommt, wenn es keine relative Eintrag in der Tabelle ist. Nach einigen Recherchen habe ich festgestellt, dass es eine Funktion IFNULL
gibt, mit der ich is_download
null
zu 0
ändern kann. Also hier ist meine Abfrage, die nicht funktioniert. Der leere Bildschirm wird angezeigt.
$subjects = $app->db->table('subjects')->LeftJoin('downloads', 'subjects.subjectID', '=', 'downloads.subject_id')
->where('universityID', $currentUser->universityID)->where('semesterID', $currentUser->semesterID)->where('courseID', $currentUser->courseID)
->select('subjects.subjectID', 'subjects.subjectName', 'subjects.price', IFNULL(`downloads`.`is_download` , 0))
->orderBy('subjectID')
->get();
ich in der Lage bin, diese Abfrage in meinem phpmyadmin zu schreiben, aber nicht wissen, wie in laravel
Dies ist die api, also ganze Code wie
sieht wie folgt aususe Illuminate\Database\Query\Expression as raw;
use project\Models\Subject;
use project\Models\Semester;
use project\Models\StudentRegistration;
$app->get('/api/getSubject/:studentID', function($studentID) use ($app) {
error_reporting(E_ALL);
$currentUser = StudentRegistration::where('studentID', $studentID)->first();
$subjects = $app->db->table('subjects')->LeftJoin('downloads', 'subjects.subjectID', '=', 'downloads.subject_id')
->where('universityID', $currentUser->universityID)->where('semesterID', $currentUser->semesterID)->where('courseID', $currentUser->courseID)
->select('subjects.subjectID', 'subjects.subjectName', 'subjects.price', IFNULL(`downloads`.`is_download` , 0))
->orderBy('subjectID')
->get();
print_r($subjects);
return $app->response->write(json_encode([
'error' => 0,
'subjects' => $subjects
]));
});
leerer Bildschirm. Keine Änderung. –
Haben Sie \ DB :: table() anstelle von $ app-> db-> table() und \ DB :: Raw() verwendet? Dies sollte gut funktionieren. Andernfalls überprüfen Sie Ihre Abfrage erneut, wenn Sie sie in Laravel verwenden. –
Was ist falsch bei der Verwendung von '$ app-> db-> table()'? –