我尝试在Laravel 5.5上使用GeoIP,我有问题让它运行起来。
iso_code
我使用Charts
的方法//Header
use GeoIP as GeoIP;
class ChartController extends Controller
{
//.....
//Method
public function index()
{
//rest of my codes
$data = geoip()->getLocation();
$chart3 = Charts::create('geo', 'highcharts')
->title('My nice chart')
->elementLabel('My nice label')
->labels($data->pluck('iso_code'))
->dimensions(1000,500)
->responsive(true);
return view('admin.charts.index', compact('chart3'));
}
.....
}
以下是使用地理图表的图表包的默认代码
Charts::create('geo', 'highcharts')
->title('My nice chart')
->elementLabel('My nice label')
->labels(['ES', 'FR', 'RU'])
->colors(['#C5CAE9', '#283593'])
->values([5,10,20])
->dimensions(1000,500)
->responsive(false);
我收到错误:
调用未定义的方法Torann \ GeoIP \ Location :: pluck()
任何想法如何实现我的需求?
提前致谢
答案 0 :(得分:0)
问题1:我无法在我的方法上获得iso_code(在下面提供)
geoip()->getLocation()
会返回Torann\GeoIP\Location
个对象,而不是Laravel Collection,因此您无法使用pluck
。
更改此行:
....
->labels($data->pluck('iso_code'))
....
改为:
....
->labels($data->iso_code)
....
Location
类实现了魔术方法__get
,因此您只需通过引用它来访问位置属性,就像读取位置对象的属性一样。
查看source code of class Location
。
问题2:如何在我的网站上获取数据而不提供静态网址?
获取所需信息的一种方法是在项目中创建单独的Service
类,然后将其包含在需要iso_code的控制器中。