با سلام و خسته نباشید
من برای گرفتن خروجی اکسل از پکیج Laravel-Excel استفاده میکنم
مشکل من اینه که نمیتونم شروط خودم رو برای گرفتن اکسل قرار بدم
مثلا میخوام از جدول یوزر خروجی بگیرم به جز مواردی که اسمشون یکی هست
ممنون میشم راهنمایی کنید
شما باید یک __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');
اگر غلط املایی یا نام نیم اسپیس ها و اینجور چیزها نمی خونه بخاطر این هست که از دوتا فایل جدا از داکیومنت لاراول برات دراوردم خودت دیگه بگیر مطلب رو باید متدسازنده بسازی و بهش متغییرهات رو پاس بدی و توی کلاس اکسپورت اکسل استفاده کنی
@juza66
ممنون بابت راهنمایی
اگر بخوام یه ارایه از اسامی رو بدم و بگم که به جز این اسامی بقیه رو بیار باید چیکار کنم ؟
آیا مایل به ارسال نوتیفیکیشن و اخبار از طرف راکت هستید ؟