0

laravel 5では、以下のクエリビルダーを使用しています

$user_social = DB::table('users')
        ->where('email','=',$credentials['email'])
        ->where('facebook', '!=', '')
        ->orWhere('google', '!=', '')
        ->get(['facebook','google']);

そして、クエリビルダーによって生成されたこのクエリを取得しています

"select * from `users` where `email` = ? and `facebook` != ? or `google` != ?"

このようなクエリを作成するために必要な変更。

"select * from `users` where `email` = ? and (`facebook` != ? or `google` != ?")

ご協力いただきありがとうございます。

4

1 に答える 1

0

私はこのようなことを試してみます:

$user_social = DB::table('users')
        ->where('email', '=', $credentials['email'])
        ->orWhere(function($query)
        {
            $query->where('facebook', '!=', '')
                  ->where('google', '!=', '');
        })
        ->get(['facebook','google']);

これにより、次のようなクエリが生成されます

select * from users where email = 'email' or (facebook != '' and google != '')
于 2016-01-19T07:17:56.323 に答える