如何在 Laravel SQL 原始查询中使用括号
how to use parenthesis in Laravel SQL raw query
我想构建一个查询,用户需要 his/her 正确 username
或 email
和 password
才能登录。
这是我的Laravel查询代码
$query = Adminuser::where('password',$password);
$query->orWhere('email',$username);
$query->where('username',$username);
通过使用它,我得到了原始的 SQL 查询,例如
select * from `adminuser` where `password` = $password and `email` = $username or `username` = $username
但我需要原始 SQL 查询来获得正确的结果
select * from `adminuser` where `password` = $password and (`email` = $username or `username` = $username)
所以我的问题是如何在 laravel 查询中使用括号?
有人帮忙吗?
您将需要使用分组。请阅读更多:Parameter Grouping (Laravel 4.2)。
您的查询应该是这样的(未测试):
编辑:
Model::where(function ($query) use ($password) {
$query->where('password',$password);
})->where(function ($query) use (email, $password){
$query->where('email',$email)
->orWhere('username',$username);
});
$query = Adminuser::where('password',$password)->where(function($query) use ($username){
$query->orWhere(['email' => $username, 'username' => $username])
})->first();
我想构建一个查询,用户需要 his/her 正确 username
或 email
和 password
才能登录。
这是我的Laravel查询代码
$query = Adminuser::where('password',$password);
$query->orWhere('email',$username);
$query->where('username',$username);
通过使用它,我得到了原始的 SQL 查询,例如
select * from `adminuser` where `password` = $password and `email` = $username or `username` = $username
但我需要原始 SQL 查询来获得正确的结果
select * from `adminuser` where `password` = $password and (`email` = $username or `username` = $username)
所以我的问题是如何在 laravel 查询中使用括号?
有人帮忙吗?
您将需要使用分组。请阅读更多:Parameter Grouping (Laravel 4.2)。
您的查询应该是这样的(未测试):
编辑:
Model::where(function ($query) use ($password) {
$query->where('password',$password);
})->where(function ($query) use (email, $password){
$query->where('email',$email)
->orWhere('username',$username);
});
$query = Adminuser::where('password',$password)->where(function($query) use ($username){
$query->orWhere(['email' => $username, 'username' => $username])
})->first();