Asked Apr 6th, 8:40 AM 64 0 3
  • 64 0 3
0

Sử dụng excel trong laravel

Share
  • 64 0 3

Xin chào mọi người,hiện mình đang làm export từ database ra excel trong laravel, đang gặp phải 1 vấn đề là khi export chỉ cần lấy thông tin của 1 số trường thôi ,k cần lấy ra khóa ngoại của bảng ạ.![] Mình muốn xuất ra excel thông tin của tất cả các trường trừ khóa phụ,

3 ANSWERS


Answered Apr 6th, 8:50 AM
+1

Nếu bạn dùng Maatwebsite thì bạn có thể tham khảo ví dụ sau của mình, trong ví dụ mình chỉ lấy ra username với email 😄

<?php

namespace App\Exports;

use App\Models\User;
use Maatwebsite\Excel\Concerns\FromCollection;
use Maatwebsite\Excel\Concerns\WithHeadings;

class UserExport implements FromCollection, WithHeadings
{
    public function collection()
    {
        return User::query()->get(['username', 'email']);
    }
    //Thêm hàng tiêu đề cho bảng
    public function headings() :array {
    	return ["Tên tài khoản", "Email"];
    }
}

Trường hợp dùng query:

public function query(): Builder
    {
        return User::query()->select(['username', 'email']);
    }
Share
Apr 6th, 9:03 AM

tks ban,hiện mình lấy ra được rồi à,nếu mình lấy thông tin của record trong data mà có type = 1 thì sử lý như nào ạ(mình đang làm thu chi trong ví,muốn excel ra mục chi và thu)

0
| Reply
Share
Dương Hoài Nam @namduong3699
Apr 6th, 9:09 AM

@khanh1234 nếu vậy thì sẽ viết ra 2 file export và thêm điều kiện ở mỗi file

public function collection() {
        return User::query()->where('type', 1)->get(['username', 'email']);
 }
0
| Reply
Share
Apr 6th, 9:13 AM

@namduong3699 cảm ơn bạn ,mình làm được rồi ạ

0
| Reply
Share
Apr 7th, 10:03 AM

@namduong3699 nếu về thời gian thì mình có sử lý được lấy ra time theo tháng không ạ,vd:tại thời điểm hiện tại lấy ra được thời gian đầu và cuối tháng trước đó

0
| Reply
Share
Dương Hoài Nam @namduong3699
Apr 7th, 10:20 AM

@khanh1234 bạn thêm điều kiện này vào nhé

public function collection() {
   return User::query()->whereMonth(
       'created_at', '=', Carbon::now()->subMonth()->month
   )->get(['username', 'email']);
}
0
| Reply
Share
Apr 7th, 10:36 AM

@namduong3699 nó ra file trắng bạn ạ,ví dụ ngày hôm nay là 7/4 lấy được ngày cuối tháng trước là 31/3

ngày đầu tháng trước là 1/3

rồi lấy các thu chi được tạo ra giới hạn trong 2 ngày đó bạn ạ

0
| Reply
Share
Apr 14th, 2:35 AM

@namduong3699 Bạn ơi,mình lấy được tháng trước rồi ,mình muốn lấy các tháng hiện tại có trong data,nếu giờ là tháng 4,mốc là tháng 12 năm ngoái,mà trong data có t1,t2, hoặc t1,t3 or t1,2,3 thì sử lý như nào ạ,mình cảm ơn

0
| Reply
Share
Answered Apr 6th, 8:54 AM
+1

bạn có thể xem ở đây nhé https://docs.laravel-excel.com/3.1/exports/collection.html Như trong docs thì đang chọn all, nhưng bạn muốn select cột nào thì chỉ cần đổi câu truy vấn là được. Và mình có 1 góp ý là khi tạo migration, việc liên kết khóa ngoại và khóa chính với nhau không sai nhưng nếu không quá cần thiết thì không nên làm vậy, vì như thế sẽ gây rất nhiều khó khăn trong việc thao tác với dữ liệu 😄

Share
Answered Apr 6th, 9:15 AM
+1

bạn dùng method only() thử xem. Ví dụ : (new DownloadExcel)->only('name', 'type'')

Share
Apr 6th, 9:20 AM

vâng ,cảm ơn ạ,em làm được rồi ạ

0
| Reply
Share