علی کوندری
2 سال پیش توسط علی کوندری مطرح شد
2 پاسخ

پیج لاراول اکسل

با سلام و خسته نباشید

من برای گرفتن خروجی اکسل از پکیج Laravel-Excel استفاده میکنم
مشکل من اینه که نمیتونم شروط خودم رو برای گرفتن اکسل قرار بدم
مثلا میخوام از جدول یوزر خروجی بگیرم به جز مواردی که اسمشون یکی هست
ممنون میشم راهنمایی کنید


ثبت پرسش جدید
سیدعلی موسوی
تخصص : سی شارپ و پی اچ پی
@juza66 2 سال پیش مطرح شد
0

شما باید یک __construct توی اون فایل مورد نظرت بسازی اگر نداری و اطلاعات کاربر رو از اونجا دریافت و توی فایل مورد نظر کوئری رو بزنی
مثال زیر

php artisan make:export UsersExport --model=User

فایل شما در مسیر زیر ساخته میشه

app\Exports\UsersExport.php

یک مثال هست توی خود داکیومنت لاراول-اکسل که شما میتونین کل یوزرها رو بصورت مثال خروجی بگیری

<?php

namespace App\Exports;

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

class UsersExport implements FromCollection
{
    public function collection()
    {
        return User::all();
    }
}

که در اخر اینجور استفاده میشه

<?php

namespace App\Http\Controllers;

use App\Exports\UsersExport;
use Maatwebsite\Excel\Facades\Excel;

class UsersController extends Controller 
{
    public function export() 
    {
        return Excel::download(new UsersExport, 'users.xlsx');
    }
}

Route::get('users/export/', [UsersController::class, 'export']);

حلا شما میخوای اون کوئری all رو بصورت پیش فرض با یکسری متغییرهای که بهش پاس میدی فیلتر رو اعمال کنی
کافیه شما یک متد سازنده یا __construct بسازید و مقادیر دلخواه رو به کلاس مورد نظرت پاس بدی
نمونه مثالی که در داکیومنت زده

namespace App\Exports;

use App\Invoice;
use Maatwebsite\Excel\Concerns\FromQuery;
use Maatwebsite\Excel\Concerns\Exportable;

class InvoicesExport implements FromQuery
{
    use Exportable;

    public function __construct(int $name)
    {
        $this->name= $name;
    }

    public function query()
    {
        return User::query()->where('name', $this->name);
    }
}

و نحوه استفاده ش

return (new User('alimousavi329'))->download('users.xlsx');

اگر غلط املایی یا نام نیم اسپیس ها و اینجور چیزها نمی خونه بخاطر این هست که از دوتا فایل جدا از داکیومنت لاراول برات دراوردم خودت دیگه بگیر مطلب رو باید متدسازنده بسازی و بهش متغییرهات رو پاس بدی و توی کلاس اکسپورت اکسل استفاده کنی


علی کوندری
@alikavandary.77 2 سال پیش مطرح شد
0

@juza66
ممنون بابت راهنمایی
اگر بخوام یه ارایه از اسامی رو بدم و بگم که به جز این اسامی بقیه رو بیار باید چیکار کنم ؟


برای ارسال پاسخ لازم است وارد شده یا ثبت‌نام کنید

ورود یا ثبت‌نام