Tôi có truy vấn trong laravel
đang hoạt động tốt.sử dụng IFNULL trong 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();
Chỉ có một vấn đề là is_download
không có giá trị khi không có mục nhập tương đối trong bảng. Sau khi một số nghiên cứu tôi thấy rằng có một chức năng IFNULL
bằng cách sử dụng mà tôi có thể thay đổi is_download
null
đến 0
. Vì vậy, đây là truy vấn của tôi mà không phải là làm việc. Màn hình trống đang hiển thị.
$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();
tôi có thể viết truy vấn này trong phpmyadmin của tôi, nhưng không biết làm thế nào để viết trong laravel
Đây là api, Vì vậy, toàn bộ mã trông giống như
use 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
]));
});
màn hình trống. không thay đổi. –
Bạn đã sử dụng \ DB :: table() thay vì $ app-> db-> table() và \ DB :: Raw()? Điều này sẽ làm việc tốt. Nếu không, hãy kiểm tra lại truy vấn của bạn khi bạn đang sử dụng nó trong laravel. –
có gì sai khi sử dụng '$ app-> db-> table()'? –