我使用laravel Maatwebsite v3和vuejs創建了一個excel導出系統,用于按管理員輸入的郵政編碼列出附近的用戶。
Controller
public function export(Request $request)
{
$file_name='frineds_'.date("d-m-Y h:i").'.csv';
return Excel::download(new FriendExport($request['postcode'],$request['miles']), $file_name);
}
FriendImport.php
namespace App\Exports;
use App\Models\Friend;
use Maatwebsite\Excel\Concerns\FromCollection;
use Maatwebsite\Excel\Concerns\WithHeadings;
use Illuminate\Support\Facades\DB;
class FriendExport implements FromCollection,WithHeadings
{
function __construct($postcode,$miles)
{
$this->postcode = $postcode;
$this->miles = $miles;
}
public function headings(): array
{
return ['UNIQUE-ID','PHONE', 'POSTCODE'];
}
public function collection()
{
#get lat and log based on post coede
$url = "https://api.postcodes.io/postcodes/".trim($this->postcode);
$result_string = file_get_contents($url);
$result = json_decode($result_string, true);
$latitude = $result['result']['latitude'];
$longitude = $result['result']['longitude'];
$location_details_qry = DB::table("friends")
->select(
'friends.unique_id',
'friends.phone',
'friends.postcode',
DB::raw("6371 * acos(cos(radians('" . $latitude . "'))
* cos(radians(friends.latitude))
* cos(radians(friends.longitude) - radians('" . $longitude . "'))
+ sin(radians('" . $latitude . "'))
* sin(radians(friends.latitude))) AS distance")
) ->havingRaw('distance<'.$this->miles)->orderBy('distance', 'asc');
return $location_details_qry->get();
}
}
export.csv
我不想要導出文件中的最后一列(距離)。幫我解決這個問題。
您可以映射行(https://docs.laravel-excel.com/3.1/exports/mapping.html#mapping-(行)
為此,您的類需要實現WithMapping