Yêu cầu Apr 6th, 2020 8:40 a.m. 105 0 3
  • 105 0 3
0

Sử dụng excel trong laravel

Chia sẻ
  • 105 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 CÂU TRẢ LỜI


Đã trả lời Apr 6th, 2020 8:54 a.m.
+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 😄

Chia sẻ
Đã trả lời Apr 6th, 2020 9:15 a.m.
+1

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

Chia sẻ
Apr 6th, 2020 9:20 a.m.

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

Đã trả lời Apr 6th, 2020 8:50 a.m.
-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']);
    }
Chia sẻ
Apr 6th, 2020 9:03 a.m.

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)

Avatar Duong Hoai Nam @namduong3699
Apr 6th, 2020 9:09 a.m.

@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']);
 }
Apr 6th, 2020 9:13 a.m.

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

Apr 7th, 2020 10:03 a.m.

@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 đó

Avatar Duong Hoai Nam @namduong3699
Apr 7th, 2020 10:20 a.m.

@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']);
}
Apr 7th, 2020 10:36 a.m.

@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 ạ

Apr 14th, 2020 2:35 a.m.

@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

Viblo
Hãy đăng ký một tài khoản Viblo để nhận được nhiều bài viết thú vị hơn.
Đăng kí