0
0
Lập trình
Admin Team
Admin Teamtechmely

Notable: Ghi chú Đa hình cho Model Laravel

Đăng vào 4 tháng trước

• 3 phút đọc

Notable: Ghi chú Đa hình cho Model Laravel

Notable là một gói Laravel giúp thêm chức năng ghi chú đa hình cho bất kỳ model Eloquent nào. Bạn có thể dễ dàng gắn ghi chú hoặc bình luận vào các model với theo dõi người tạo, dấu thời giancác phương thức truy vấn mạnh mẽ.

Gói này hoàn hảo cho:

  • Ghi chú nội bộ
  • Nhật ký kiểm toán
  • Phản hồi của người dùng
  • Tất cả các loại chú thích văn bản có thể theo dõi

✨ Tính năng chính

  • 🔗 Mối quan hệ đa hình – Gắn ghi chú vào bất kỳ model Eloquent nào.
  • 👤 Theo dõi người tạo – Theo dõi ai đã tạo mỗi ghi chú (người tạo cũng là đa hình!).
  • Dấu thời gian – Tự động theo dõi created_atupdated_at.
  • 🔍 Phương thức truy vấn – Các phương thức truy vấn mạnh mẽ để lọc và tìm kiếm ghi chú.
  • ⚙️ Có thể cấu hình – Tùy chỉnh tên bảng thông qua tệp cấu hình.
  • 🚀 Tích hợp dễ dàng – Triển khai đơn giản dựa trên trait.
  • 📦 Sẵn sàng cho Laravel 10+ – Được xây dựng cho các ứng dụng Laravel hiện đại.

🚀 Cài đặt

Cài đặt thông qua Composer:

Copy
composer require eg-mohamed/notable

Xuất bản và chạy các migration:

Copy
php artisan vendor:publish --tag="notable-migrations"
php artisan migrate

Tùy chọn xuất bản tệp cấu hình:

Copy
php artisan vendor:publish --tag="notable-config"

🎯 Bắt đầu nhanh

1️⃣ Thêm Trait vào một Model

php Copy
use MohamedSaid\Notable\Traits\HasNotables;

class SupportTicket extends Model
{
    use HasNotables;
}

2️⃣ Bắt đầu thêm ghi chú

php Copy
// Khách hàng thêm một ghi chú
$ticket->addNote('Vẫn gặp vấn đề', $customer);

// Nhân viên hỗ trợ phản hồi
$ticket->addNote('Đang điều tra vấn đề', $agent);

// Lấy lịch sử trò chuyện
$conversation = $ticket->getNotesWithCreator();

📚 Các thao tác phổ biến

php Copy
// Lấy ghi chú
$ticket->getNotes();
$ticket->getNotesToday();
$ticket->getNotesThisWeek();
$ticket->getNotesThisMonth();
$ticket->getNotesInRange('2024-01-01', '2024-12-31');

// Tìm kiếm ghi chú theo nội dung
$ticket->searchNotes('lỗi');

// Kiểm tra xem model có ghi chú không
if ($ticket->hasNotes()) {
    echo "Vé này có {$ticket->notesCount()} ghi chú.";
}

🔍 Các phương thức truy vấn nâng cao

php Copy
use MohamedSaid\Notable\Notable;

// Ghi chú của người tạo cụ thể
$notes = Notable::byCreator($user)->get();

// Ghi chú không có người tạo (ghi chú hệ thống)
$systemNotes = Notable::withoutCreator()->get();

// Ghi chú gần đây hoặc cũ hơn
$recentNotes = Notable::recent(7)->get();
$oldNotes = Notable::olderThan(30)->get();

// Các phương thức dựa trên ngày
$todayNotes = Notable::today()->get();
$monthNotes = Notable::thisMonth()->get();
$rangeNotes = Notable::betweenDates('2024-01-01', '2024-12-31')->get();

// Tìm kiếm văn bản
$searchResults = Notable::search('đăng nhập')->get();

🗂 Sơ đồ cơ sở dữ liệu

Cột Loại Mô tả
id bigint Khóa chính
note text Nội dung ghi chú
notable_type varchar Loại đa hình (lớp model)
notable_id bigint ID đa hình (ID model)
creator_type varchar Loại đa hình của người tạo (có thể null)
creator_id bigint ID đa hình của người tạo (có thể null)
created_at timestamp Thời gian tạo
updated_at timestamp Thời gian cập nhật

Bạn có thể tùy chỉnh tên bảng trong config/notable.php:

php Copy
return [
    'table_name' => 'notables',
];

💡 Ví dụ về các trường hợp sử dụng

Nhật ký hoạt động của người dùng

php Copy
$user->addNote('Đã thay đổi mật khẩu', $admin);
$user->addNote('Đã đăng nhập', $user);

Theo dõi đơn hàng

php Copy
$order->addNote('Đơn hàng đã được gửi', $system);
$order->addNote('Giao hàng thành công', $staff);

Vé hỗ trợ

php Copy
$ticket->addNote('Người dùng đã báo cáo lỗi', $customer);
$ticket->addNote('Sửa lỗi đã được triển khai', $developer);

👨‍💻 Đóng góp & Hỗ trợ

  • Báo cáo sự cố & lỗi: GitHub Issues
  • Pull requests luôn được chào đón!
  • Được cấp phép theo Giấy phép MIT.

Những lưu ý quan trọng

  • Cấu hình: Đảm bảo bạn kiểm tra tệp cấu hình để tùy chỉnh tên bảng theo nhu cầu của dự án.
  • Hiệu suất: Sử dụng các phương thức truy vấn một cách hợp lý để đảm bảo hiệu suất tối ưu khi có số lượng lớn ghi chú.

FAQ

1. Notable có tương thích với các phiên bản Laravel nào?

Notable được thiết kế để hoạt động tốt với Laravel 10 và các phiên bản mới hơn.

2. Làm thế nào để tìm kiếm ghi chú theo người tạo?

Bạn có thể sử dụng phương thức Notable::byCreator($user) để lọc ghi chú theo người tạo.

3. Có cách nào để tùy chỉnh cấu trúc bảng không?

Có, bạn có thể sửa đổi tên bảng trong tệp cấu hình config/notable.php.


Kết luận

Gói Notable là một công cụ mạnh mẽ cho phép bạn quản lý ghi chú đa hình trong các ứng dụng Laravel. Bằng cách tận dụng các tính năng như theo dõi người tạo và phương thức truy vấn mạnh mẽ, bạn có thể dễ dàng theo dõi và quản lý thông tin quan trọng trong ứng dụng của mình. Hãy thử nghiệm và tích hợp Notable vào dự án của bạn ngay hôm nay!

Gợi ý câu hỏi phỏng vấn
Không có dữ liệu

Không có dữ liệu

Bài viết được đề xuất
Bài viết cùng tác giả

Bình luận

Chưa có bình luận nào

Chưa có bình luận nào