Asked thg 4 6, 2020 8:40 SA 97 0 3
  • 97 0 3
0

Sử dụng excel trong laravel

Share
  • 97 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 thg 4 6, 2020 8:50 SA
+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
thg 4 6, 2020 9:03 SA

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
Avatar Duong Hoai Nam @namduong3699
thg 4 6, 2020 9:09 SA

@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
thg 4 6, 2020 9:13 SA

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

0
| Reply
Share
thg 4 7, 2020 10:03 SA

@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
Avatar Duong Hoai Nam @namduong3699
thg 4 7, 2020 10:20 SA

@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
thg 4 7, 2020 10:36 SA

@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
thg 4 14, 2020 2:35 SA

@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 thg 4 6, 2020 8:54 SA
+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 thg 4 6, 2020 9:15 SA
+1

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

Share
thg 4 6, 2020 9:20 SA

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

0
| Reply
Share
Viblo
Let's register a Viblo Account to get more interesting posts.