如何使用 JavaScript 从 Laravel 控制器获取所有值到索引?
How to get all values from Laravel controller to index using JavaScript?
我正在使用 Laravel 从 table 获取所有数据并显示 Leaflet 的坐标列表。目前我正在研究如何在 GisController 中使用 $gis
到索引的 JavaScript.
所以这是 GisController.php
public function index()
{
$gis = Gis::all();
return view('gis/map', compact('gis'));
}
这是来自 index.blade.php
foreach ($gis as $gisData) {
//------- data from controller
var gisType = $gisData->type;
if (gisType == 1) {
//------- data from controller
var polylinePoints = $gisData->coordinates;
var polyline = L.polyline(polylinePoints).addTo(map);
} else if (gisType == 2) {
//------- data from controller
var markerPoint= $gisData->coordinates;
var marker = L.marker(markerPoint).addTo(map);
}
}
有两种方式:
- 使用 ajax return 对象
- 将变量设置为 javascript
<script>
const gisData = <?php echo json_encode($gis); ?>;
</script>
注意:可以将$gis转换成数组
你也可以做一个动态 ajax 击中 Laravel api。我看到您正在尝试在表示层中使用逻辑,应该尽量远离它。
您也可以将它发送到已经预格式化的前面以作为 json:
使用
public function index()
{
$gis = Gis::all()->toJson();
return view('gis/map', compact('gis'));
}
在那一点上,你不需要做任何转换,只需在你的 JS 中使用 json,而不必做一堆 php 标签或 blade 标签。
到目前为止,我认为 api 是解决此问题的方法。因此,您可以在需要数据时点击端点,可以在控制器中执行您需要的逻辑,然后将您需要的数据发送到前端。我不知道这个 Gis 模型有多大,但如果它有大量数据,你会看到巨大的性能下降,不断地恢复每一行数据。
示例将使用 get() 或 first() 和/或限制结果。
我的一个项目中有一个 table 超过 100 万条记录,如果我要执行 all() ,服务器会把我吐得一干二净。
我正在使用 Laravel 从 table 获取所有数据并显示 Leaflet 的坐标列表。目前我正在研究如何在 GisController 中使用 $gis
到索引的 JavaScript.
所以这是 GisController.php
public function index()
{
$gis = Gis::all();
return view('gis/map', compact('gis'));
}
这是来自 index.blade.php
foreach ($gis as $gisData) {
//------- data from controller
var gisType = $gisData->type;
if (gisType == 1) {
//------- data from controller
var polylinePoints = $gisData->coordinates;
var polyline = L.polyline(polylinePoints).addTo(map);
} else if (gisType == 2) {
//------- data from controller
var markerPoint= $gisData->coordinates;
var marker = L.marker(markerPoint).addTo(map);
}
}
有两种方式:
- 使用 ajax return 对象
- 将变量设置为 javascript
<script>
const gisData = <?php echo json_encode($gis); ?>;
</script>
注意:可以将$gis转换成数组
你也可以做一个动态 ajax 击中 Laravel api。我看到您正在尝试在表示层中使用逻辑,应该尽量远离它。 您也可以将它发送到已经预格式化的前面以作为 json:
使用public function index()
{
$gis = Gis::all()->toJson();
return view('gis/map', compact('gis'));
}
在那一点上,你不需要做任何转换,只需在你的 JS 中使用 json,而不必做一堆 php 标签或 blade 标签。
到目前为止,我认为 api 是解决此问题的方法。因此,您可以在需要数据时点击端点,可以在控制器中执行您需要的逻辑,然后将您需要的数据发送到前端。我不知道这个 Gis 模型有多大,但如果它有大量数据,你会看到巨大的性能下降,不断地恢复每一行数据。
示例将使用 get() 或 first() 和/或限制结果。
我的一个项目中有一个 table 超过 100 万条记录,如果我要执行 all() ,服务器会把我吐得一干二净。