Ami*_*mir 2 php pdo laravel eloquent laravel-4
我只想运行这样的查询:
select * from `users` where SUBSTRING_INDEX(`email`, '@' ,-1) not in ('gmail.com, outlook.com');
Run Code Online (Sandbox Code Playgroud)
有两种方法使我无法解决:
$providers = array('gmail.com', 'outlook.com');
$providers = "'" . implode("', '", $providers) . "'";
User::whereRaw("SUBSTRING_INDEX(`email`, '@' ,-1) not in (?)", $providers);
Run Code Online (Sandbox Code Playgroud)
上面的方法不起作用,因为PDO将转义“'”字符。
User::whereIn(DB::raw("SUBSTRING_INDEX(`email`, '@' ,-1)", $providers);
Run Code Online (Sandbox Code Playgroud)
这根本行不通。任何的想法?
这是一种更安全的方法:
$providers = ['gmail.com', 'outlook.com'];
$placeholder = implode(', ', array_fill(0, count($providers), '?'));
User::whereRaw("SUBSTRING_INDEX(`email`, '@' ,-1) not in ($placeholder)", $providers);
Run Code Online (Sandbox Code Playgroud)