如何在 Laravel 4 中实现这一点?
$countryName = DB::only("SELECT f_iptocountry_country_name FROM t_iptocountry WHERE $visitorsIp BETWEEN f_iptocountry_begin_ip_num AND f_iptocountry_end_ip_num");
使用 Laravel 3 可以查询。
任何人?
假设您有一个与表 t_iptocountry 相关的模型 IPToCountry,并且您确定不会有多个国家/地区使用相同的 IP 范围:
$country = IPToCountry::where('f_iptocountry_begin_ip_num', '>=', $visitorsIp)
->where('f_iptocountry_end_ip_num', '<=', $visitorsIp)
->first(['f_iptocountry_country_name']);
$countryName = count($country) > 0 ? $country->f_iptocountry_country_name : '';
你关心性能吗?在这种情况下,要真正使用 BETWEEN 子句,您有两个选择:一组更复杂的 Laravel 指令(可能使用匿名函数)或部分使用原始查询。
使用 raw 它变成:
$country = DB::table('t_iptocountry')
->whereRaw("'$visitorsIp' BETWEEN f_iptocountry_begin_ip_num AND f_iptocountry_end_ip_num")
->first(['f_iptocountry_country_name']);
$countryName = count($country) > 0 ? $country->f_iptocountry_country_name : '';