在 Laravel 中使用 IFNULL
声明:本页面是StackOverFlow热门问题的中英对照翻译,遵循CC BY-SA 4.0协议,如果您需要使用它,必须同样遵循CC BY-SA许可,注明原文地址和作者信息,同时你必须将它归于原作者(不是我):StackOverFlow
原文地址: http://stackoverflow.com/questions/36153019/
Warning: these are provided under cc-by-sa 4.0 license. You are free to use/share it, But you must attribute it to the original authors (not me):
StackOverFlow
use IFNULL in laravel
提问by Kapil Sharma
I have a query in laravel
which is working fine.
我有一个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();
There is only one issue that is_download
comes null when there is no relative entry in table. After some research I found that there is a function IFNULL
by using which I can change is_download
null
to 0
. So here is my query which is not working. Blank screen is showing.
is_download
当表中没有相对条目时,只有一个问题为空。经过一些研究,我发现有一个函数IFNULL
可以使用,我可以将其更改is_download
null
为0
. 所以这是我的查询不起作用。显示空白屏幕。
$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();
I am able to write this query in my phpmyadmin but not know how to write in laravel
我可以在我的 phpmyadmin 中编写此查询,但不知道如何编写 laravel
This is the api, So whole code looks like
这是 api,所以整个代码看起来像
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
]));
});
回答by Md Mahfuzur Rahman
Try like this:
像这样尝试:
DB::Raw('IFNULL( `downloads`.`is_download` , 0 )');
$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', DB::Raw('IFNULL( `downloads`.`is_download` , 0 )') )
->orderBy('subjectID')
->get();
回答by Dayachand Patel
You just need to use like this way,
你只需要像这样使用,
DB::raw('IFNULL( downloads.is_download, 0) as is_download')
回答by Agus Suhardi
This my code
这是我的代码
->whereRaw('customer_id = IFNULL(?, customer_id)', [$request->customer_id])