Chỉ hiển thị nội dung liên quan đến danh mục của nó trong Laravel 8

Rinvex Categories là một gói Laravel đa hình, để quản lý danh mục. Bạn có thể phân loại bất kỳ mô hình hùng hồn nào một cách dễ dàng và sử dụng sức mạnh của Bộ lồng nhau cũng như sự tuyệt vời của các mô hình Có thể chuyển đổi và Có thể dịch được ngay lập tức

Cài đặt

  1. Cài đặt gói qua nhà soạn nhạc

    composer require rinvex/laravel-categories

  2. Xuất bản tài nguyên [di chuyển và tệp cấu hình]

    php artisan rinvex:publish:categories

  3. Thực hiện di chuyển thông qua lệnh sau

    php artisan rinvex:migrate:categories

  4. Xong

Cách sử dụng

Để thêm hỗ trợ danh mục cho các mô hình hùng hồn của bạn, chỉ cần sử dụng đặc điểm

// Single category id
$post->attachCategories[1];

// Multiple category IDs array
$post->attachCategories[[1, 2, 5]];

// Multiple category IDs collection
$post->attachCategories[collect[[1, 2, 5]]];

// Single category model instance
$categoryInstance = app['rinvex.categories.category']->first[];
$post->attachCategories[$categoryInstance];

// Single category slug
$post->attachCategories['test-category'];

// Multiple category slugs array
$post->attachCategories[['first-category', 'second-category']];

// Multiple category slugs collection
$post->attachCategories[collect[['first-category', 'second-category']]];

// Multiple category model instances
$categoryInstances = app['rinvex.categories.category']->whereIn['id', [1, 2, 5]]->get[];
$post->attachCategories[$categoryInstances];
4

Quản lý danh mục của bạn

Danh mục của bạn chỉ là mô hình hùng biện bình thường, vì vậy bạn có thể đối phó với nó như vậy. Không có gì đặc biệt ở đây

ghi chú. vì Rinvex Categories mở rộng và sử dụng các gói tuyệt vời khác, hãy xem các tài liệu sau để biết thêm chi tiết

  • Bộ lồng nhau mạnh mẽ bằng cách sử dụng
    // Single category id
    $post->attachCategories[1];
    
    // Multiple category IDs array
    $post->attachCategories[[1, 2, 5]];
    
    // Multiple category IDs collection
    $post->attachCategories[collect[[1, 2, 5]]];
    
    // Single category model instance
    $categoryInstance = app['rinvex.categories.category']->first[];
    $post->attachCategories[$categoryInstance];
    
    // Single category slug
    $post->attachCategories['test-category'];
    
    // Multiple category slugs array
    $post->attachCategories[['first-category', 'second-category']];
    
    // Multiple category slugs collection
    $post->attachCategories[collect[['first-category', 'second-category']]];
    
    // Multiple category model instances
    $categoryInstances = app['rinvex.categories.category']->whereIn['id', [1, 2, 5]]->get[];
    $post->attachCategories[$categoryInstances];
    5
  • Trượt tự động bằng cách sử dụng
    // Single category id
    $post->attachCategories[1];
    
    // Multiple category IDs array
    $post->attachCategories[[1, 2, 5]];
    
    // Multiple category IDs collection
    $post->attachCategories[collect[[1, 2, 5]]];
    
    // Single category model instance
    $categoryInstance = app['rinvex.categories.category']->first[];
    $post->attachCategories[$categoryInstance];
    
    // Single category slug
    $post->attachCategories['test-category'];
    
    // Multiple category slugs array
    $post->attachCategories[['first-category', 'second-category']];
    
    // Multiple category slugs collection
    $post->attachCategories[collect[['first-category', 'second-category']]];
    
    // Multiple category model instances
    $categoryInstances = app['rinvex.categories.category']->whereIn['id', [1, 2, 5]]->get[];
    $post->attachCategories[$categoryInstances];
    6
  • Có thể dịch ra khỏi hộp bằng cách sử dụng
    // Single category id
    $post->attachCategories[1];
    
    // Multiple category IDs array
    $post->attachCategories[[1, 2, 5]];
    
    // Multiple category IDs collection
    $post->attachCategories[collect[[1, 2, 5]]];
    
    // Single category model instance
    $categoryInstance = app['rinvex.categories.category']->first[];
    $post->attachCategories[$categoryInstance];
    
    // Single category slug
    $post->attachCategories['test-category'];
    
    // Multiple category slugs array
    $post->attachCategories[['first-category', 'second-category']];
    
    // Multiple category slugs collection
    $post->attachCategories[collect[['first-category', 'second-category']]];
    
    // Multiple category model instances
    $categoryInstances = app['rinvex.categories.category']->whereIn['id', [1, 2, 5]]->get[];
    $post->attachCategories[$categoryInstances];
    7

Quản lý mô hình có thể phân loại của bạn

API trực quan và rất đơn giản, vì vậy hãy xem nhanh

// Get all categories
$allCategories = app['rinvex.categories.category']->first[];

// Get instance of your model
$post = new \App\Models\Post::find[];

// Get attached categories collection
$post->categories;

// Get attached categories query builder
$post->categories[];

Bạn có thể đính kèm danh mục theo nhiều cách khác nhau

// Single category id
$post->attachCategories[1];

// Multiple category IDs array
$post->attachCategories[[1, 2, 5]];

// Multiple category IDs collection
$post->attachCategories[collect[[1, 2, 5]]];

// Single category model instance
$categoryInstance = app['rinvex.categories.category']->first[];
$post->attachCategories[$categoryInstance];

// Single category slug
$post->attachCategories['test-category'];

// Multiple category slugs array
$post->attachCategories[['first-category', 'second-category']];

// Multiple category slugs collection
$post->attachCategories[collect[['first-category', 'second-category']]];

// Multiple category model instances
$categoryInstances = app['rinvex.categories.category']->whereIn['id', [1, 2, 5]]->get[];
$post->attachCategories[$categoryInstances];

ghi chú

  • Phương thức
    // Single category id
    $post->attachCategories[1];
    
    // Multiple category IDs array
    $post->attachCategories[[1, 2, 5]];
    
    // Multiple category IDs collection
    $post->attachCategories[collect[[1, 2, 5]]];
    
    // Single category model instance
    $categoryInstance = app['rinvex.categories.category']->first[];
    $post->attachCategories[$categoryInstance];
    
    // Single category slug
    $post->attachCategories['test-category'];
    
    // Multiple category slugs array
    $post->attachCategories[['first-category', 'second-category']];
    
    // Multiple category slugs collection
    $post->attachCategories[collect[['first-category', 'second-category']]];
    
    // Multiple category model instances
    $categoryInstances = app['rinvex.categories.category']->whereIn['id', [1, 2, 5]]->get[];
    $post->attachCategories[$categoryInstances];
    8 gắn các danh mục đã cho vào mô hình mà không cần chạm vào các danh mục hiện được đính kèm, trong khi phương thức
    // Single category id
    $post->attachCategories[1];
    
    // Multiple category IDs array
    $post->attachCategories[[1, 2, 5]];
    
    // Multiple category IDs collection
    $post->attachCategories[collect[[1, 2, 5]]];
    
    // Single category model instance
    $categoryInstance = app['rinvex.categories.category']->first[];
    $post->attachCategories[$categoryInstance];
    
    // Single category slug
    $post->attachCategories['test-category'];
    
    // Multiple category slugs array
    $post->attachCategories[['first-category', 'second-category']];
    
    // Multiple category slugs collection
    $post->attachCategories[collect[['first-category', 'second-category']]];
    
    // Multiple category model instances
    $categoryInstances = app['rinvex.categories.category']->whereIn['id', [1, 2, 5]]->get[];
    $post->attachCategories[$categoryInstances];
    9 có thể tách bất kỳ bản ghi nào không có trong các mục đã cho, phương thức này nhận tham số boolean tùy chọn thứ hai được đặt cờ tách thành
    php artisan rinvex:publish:categories
    10 hoặc
    php artisan rinvex:publish:categories
    11
  • Để tách các danh mục mô hình, bạn có thể sử dụng phương thức
    php artisan rinvex:publish:categories
    12, sử dụng chính xác chữ ký giống như phương thức
    // Single category id
    $post->attachCategories[1];
    
    // Multiple category IDs array
    $post->attachCategories[[1, 2, 5]];
    
    // Multiple category IDs collection
    $post->attachCategories[collect[[1, 2, 5]]];
    
    // Single category model instance
    $categoryInstance = app['rinvex.categories.category']->first[];
    $post->attachCategories[$categoryInstance];
    
    // Single category slug
    $post->attachCategories['test-category'];
    
    // Multiple category slugs array
    $post->attachCategories[['first-category', 'second-category']];
    
    // Multiple category slugs collection
    $post->attachCategories[collect[['first-category', 'second-category']]];
    
    // Multiple category model instances
    $categoryInstances = app['rinvex.categories.category']->whereIn['id', [1, 2, 5]]->get[];
    $post->attachCategories[$categoryInstances];
    8, với tính năng bổ sung là tách tất cả các danh mục hiện được đính kèm bằng cách chuyển null hoặc không có gì cho phương thức đó như sau.
    php artisan rinvex:publish:categories
    14

Và như bạn có thể mong đợi, bạn có thể kiểm tra xem các danh mục được đính kèm

php artisan rinvex:publish:categories
1

ghi chú

  • Phương thức
    php artisan rinvex:publish:categories
    15 kiểm tra xem BẤT KỲ danh mục nào trong số các danh mục đã cho có được đính kèm với mô hình hay không. Kết quả là nó trả về giá trị boolean
    php artisan rinvex:publish:categories
    10 hoặc
    php artisan rinvex:publish:categories
    11
  • Tương tự, phương thức
    php artisan rinvex:publish:categories
    18 sử dụng chính xác chữ ký giống như phương thức
    php artisan rinvex:publish:categories
    15, nhưng nó hoạt động khác và thực hiện so sánh nghiêm ngặt để kiểm tra xem TẤT CẢ các danh mục đã cho có được đính kèm hay không

Sử dụng nâng cao

Tạo sên danh mục

Rinvex Categories tự động tạo sên và tự động phát hiện và chèn bản dịch mặc định cho bạn nếu không được cung cấp, nhưng bạn vẫn có thể chuyển nó một cách rõ ràng thông qua phương thức

php artisan rinvex:migrate:categories
20 hùng hồn thông thường, như sau

php artisan rinvex:migrate:categories
2

Ghi chú. Kiểm tra gói Sluggable để biết thêm chi tiết

Phát hiện tham số thông minh

Các phương thức của Rinvex Categories chấp nhận danh sách các danh mục đủ thông minh để xử lý hầu hết các loại đầu vào như bạn đã thấy trong các ví dụ trên. Nó sẽ kiểm tra loại đầu vào và hành xử phù hợp

Truy xuất tất cả các mô hình được đính kèm với danh mục

Bạn có thể gặp trường hợp cần đính kèm tất cả các mô hình vào danh mục nhất định, bạn có thể thực hiện dễ dàng như sau

php artisan rinvex:migrate:categories
4

phạm vi truy vấn

Có, Danh mục Rinvex được cung cấp với một vài phạm vi truy vấn tuyệt vời để thuận tiện cho bạn, ví dụ sử dụng

php artisan rinvex:migrate:categories
5

ghi chú

  • Phạm vi
    php artisan rinvex:migrate:categories
    21 tìm thấy các bài đăng có BẤT KỲ danh mục đính kèm nào của nội dung đã cho. Nó trả về bình thường một trình tạo truy vấn, vì vậy bạn có thể xâu chuỗi nó hoặc gọi phương thức
    php artisan rinvex:migrate:categories
    22 chẳng hạn để thực thi và nhận kết quả
  • Tương tự, có một số phạm vi khác như
    php artisan rinvex:migrate:categories
    23 tìm các bài đăng có TẤT CẢ các danh mục đính kèm của nội dung đã cho,
    php artisan rinvex:migrate:categories
    24 tìm các bài đăng không có BẤT KỲ danh mục đính kèm nào của nội dung đã cho và cuối cùng là
    php artisan rinvex:migrate:categories
    25 tìm các bài đăng không có BẤT KỲ danh mục đính kèm nào. Tất cả các phạm vi được tạo bằng nhau, có cùng chữ ký và trả về trình tạo truy vấn

Bản dịch chuyên mục

Quản lý các bản dịch danh mục một cách dễ dàng như sau

// Single category id
$post->attachCategories[1];

// Multiple category IDs array
$post->attachCategories[[1, 2, 5]];

// Multiple category IDs collection
$post->attachCategories[collect[[1, 2, 5]]];

// Single category model instance
$categoryInstance = app['rinvex.categories.category']->first[];
$post->attachCategories[$categoryInstance];

// Single category slug
$post->attachCategories['test-category'];

// Multiple category slugs array
$post->attachCategories[['first-category', 'second-category']];

// Multiple category slugs collection
$post->attachCategories[collect[['first-category', 'second-category']]];

// Multiple category model instances
$categoryInstances = app['rinvex.categories.category']->whereIn['id', [1, 2, 5]]->get[];
$post->attachCategories[$categoryInstances];
1

Ghi chú. Kiểm tra gói Translable để biết thêm chi tiết

Quản lý các nút/bộ lồng nhau của bạn

Chèn danh mục

Di chuyển và chèn danh mục bao gồm một số truy vấn cơ sở dữ liệu, vì vậy giao dịch sẽ tự động bắt đầu khi danh mục được lưu. Sẽ an toàn khi sử dụng giao dịch toàn cầu nếu bạn làm việc với một số mô hình

Một lưu ý quan trọng khác là các thao tác cấu trúc được hoãn lại cho đến khi bạn nhấn vào

php artisan rinvex:migrate:categories
26 trên mô hình [một số phương thức gọi ngầm
php artisan rinvex:migrate:categories
26 và trả về kết quả boolean của thao tác]

Nếu mô hình được lưu thành công, điều đó không có nghĩa là danh mục đó đã được di chuyển. Nếu ứng dụng của bạn phụ thuộc vào việc danh mục có thực sự thay đổi vị trí của nó hay không, hãy sử dụng phương pháp

php artisan rinvex:migrate:categories
28

php artisan rinvex:publish:categories
0

Tạo danh mục

Khi bạn chỉ cần tạo một danh mục, nó sẽ được thêm vào cuối cây

php artisan rinvex:publish:categories
1

Trong trường hợp này, danh mục được coi là gốc có nghĩa là nó không có cha

Tạo gốc từ danh mục hiện có

Danh mục sẽ được thêm vào cuối cây

php artisan rinvex:publish:categories
2

Nối thêm và phụ thuộc vào cha mẹ được chỉ định

Nếu bạn muốn đặt danh mục con của danh mục khác, bạn có thể đặt nó là con cuối cùng hoặc con đầu tiên. Giả sử rằng

php artisan rinvex:migrate:categories
29 là một số danh mục hiện có, có một số cách để thêm danh mục

php artisan rinvex:publish:categories
3

Và chỉ có một vài cách để trả trước

php artisan rinvex:publish:categories
4

Chèn trước hoặc sau danh mục đã chỉ định

Bạn có thể biến

php artisan rinvex:migrate:categories
40 thành hàng xóm của danh mục
php artisan rinvex:migrate:categories
41. Giả sử rằng
php artisan rinvex:migrate:categories
41 là một số danh mục hiện có, trong khi danh mục mục tiêu có thể mới. Nếu danh mục mục tiêu tồn tại, nó sẽ được chuyển đến vị trí mới và cha mẹ sẽ được thay đổi nếu cần

php artisan rinvex:publish:categories
5

Xây dựng một cây từ mảng

Khi sử dụng phương thức tĩnh

php artisan rinvex:migrate:categories
20 trên danh mục, nó sẽ kiểm tra xem các thuộc tính có chứa khóa
php artisan rinvex:migrate:categories
44 hay không. Nếu đúng như vậy, nó sẽ tạo ra nhiều danh mục hơn theo cách đệ quy, như sau

php artisan rinvex:publish:categories
6

php artisan rinvex:migrate:categories
45 hiện chứa danh sách các danh mục con đã tạo

Xây dựng lại một cây từ mảng

Bạn có thể dễ dàng xây dựng lại một cái cây. Điều này rất hữu ích cho việc thay đổi hàng loạt cấu trúc của cây. Với

php artisan rinvex:migrate:categories
46 dưới dạng một mảng các danh mục, bạn có thể xây dựng cây như sau

php artisan rinvex:publish:categories
7

Có một id được chỉ định cho danh mục có tiêu đề là

php artisan rinvex:migrate:categories
47, điều đó có nghĩa là danh mục hiện có sẽ được điền và lưu. Nếu danh mục không tồn tại,
php artisan rinvex:migrate:categories
48 sẽ bị ném. Ngoài ra, danh mục này đã chỉ định
php artisan rinvex:migrate:categories
44 cũng là một mảng các danh mục;

Danh mục

php artisan rinvex:migrate:categories
51 không có khóa chính được chỉ định, vì vậy nó sẽ được coi là khóa mới và được tạo

php artisan rinvex:migrate:categories
52 hiển thị có nên xóa danh mục đã tồn tại nhưng không có trong
php artisan rinvex:migrate:categories
46. Theo mặc định, danh mục không bị xóa

Truy xuất danh mục

Trong một số trường hợp, chúng tôi sẽ sử dụng biến

php artisan rinvex:migrate:categories
54 là id của danh mục mục tiêu

Tổ tiên

Tổ tiên làm chuỗi cha mẹ đến phạm trù. Hữu ích để hiển thị breadcrumbs cho danh mục hiện tại

php artisan rinvex:publish:categories
8

Hậu duệ

Hậu duệ là tất cả các danh mục trong một cây con, tôi. e. trẻ em của thể loại, trẻ em của trẻ em, vv

php artisan rinvex:publish:categories
9

Con cháu có thể háo hức nạp

php artisan rinvex:migrate:categories
0

Anh chị em ruột

Anh chị em là những thể loại có cùng cha mẹ

php artisan rinvex:migrate:categories
1

Để chỉ nhận anh chị em tiếp theo

php artisan rinvex:migrate:categories
2

Để có được anh chị em trước đây

php artisan rinvex:migrate:categories
3

Lấy các mô hình liên quan từ bảng khác

Hãy tưởng tượng rằng mỗi danh mục

php artisan rinvex:migrate:categories
55 sản phẩm. Tôi. e. Mối quan hệ
php artisan rinvex:migrate:categories
56 được thiết lập. Làm cách nào bạn có thể nhận được tất cả các sản phẩm của
php artisan rinvex:migrate:categories
40 và mọi hậu duệ của nó?

php artisan rinvex:migrate:categories
4

Bây giờ hãy tưởng tượng rằng mỗi danh mục có 255 bài đăng. Tôi. e.

php artisan rinvex:migrate:categories
59 mối quan hệ được thiết lập lần này. Làm cách nào bạn có thể nhận được tất cả các bài đăng của
php artisan rinvex:migrate:categories
40 và mọi hậu duệ của nó? . Chắc chắn rồi

php artisan rinvex:migrate:categories
5

Bao gồm độ sâu danh mục

Nếu bạn cần biết danh mục đang ở cấp độ nào

php artisan rinvex:migrate:categories
6

Danh mục gốc sẽ ở cấp 0. Con của các danh mục gốc sẽ có cấp độ 1, v.v. Để nhận các danh mục ở cấp độ được chỉ định, bạn có thể áp dụng ràng buộc

// Single category id
$post->attachCategories[1];

// Multiple category IDs array
$post->attachCategories[[1, 2, 5]];

// Multiple category IDs collection
$post->attachCategories[collect[[1, 2, 5]]];

// Single category model instance
$categoryInstance = app['rinvex.categories.category']->first[];
$post->attachCategories[$categoryInstance];

// Single category slug
$post->attachCategories['test-category'];

// Multiple category slugs array
$post->attachCategories[['first-category', 'second-category']];

// Multiple category slugs collection
$post->attachCategories[collect[['first-category', 'second-category']]];

// Multiple category model instances
$categoryInstances = app['rinvex.categories.category']->whereIn['id', [1, 2, 5]]->get[];
$post->attachCategories[$categoryInstances];
11

php artisan rinvex:migrate:categories
7

Thứ tự mặc định

Mỗi danh mục có giá trị

// Single category id
$post->attachCategories[1];

// Multiple category IDs array
$post->attachCategories[[1, 2, 5]];

// Multiple category IDs collection
$post->attachCategories[collect[[1, 2, 5]]];

// Single category model instance
$categoryInstance = app['rinvex.categories.category']->first[];
$post->attachCategories[$categoryInstance];

// Single category slug
$post->attachCategories['test-category'];

// Multiple category slugs array
$post->attachCategories[['first-category', 'second-category']];

// Multiple category slugs collection
$post->attachCategories[collect[['first-category', 'second-category']]];

// Multiple category model instances
$categoryInstances = app['rinvex.categories.category']->whereIn['id', [1, 2, 5]]->get[];
$post->attachCategories[$categoryInstances];
12 duy nhất của riêng nó xác định vị trí của nó trong cây. Nếu bạn muốn danh mục được sắp xếp theo giá trị này, bạn có thể sử dụng phương thức
// Single category id
$post->attachCategories[1];

// Multiple category IDs array
$post->attachCategories[[1, 2, 5]];

// Multiple category IDs collection
$post->attachCategories[collect[[1, 2, 5]]];

// Single category model instance
$categoryInstance = app['rinvex.categories.category']->first[];
$post->attachCategories[$categoryInstance];

// Single category slug
$post->attachCategories['test-category'];

// Multiple category slugs array
$post->attachCategories[['first-category', 'second-category']];

// Multiple category slugs collection
$post->attachCategories[collect[['first-category', 'second-category']]];

// Multiple category model instances
$categoryInstances = app['rinvex.categories.category']->whereIn['id', [1, 2, 5]]->get[];
$post->attachCategories[$categoryInstances];
13 trên trình tạo truy vấn

php artisan rinvex:migrate:categories
8

Bạn có thể nhận các danh mục theo thứ tự đảo ngược

php artisan rinvex:migrate:categories
9

Chuyển thể loại

Để thay đổi danh mục lên hoặc xuống bên trong cha mẹ để ảnh hưởng đến thứ tự mặc định

// Get all categories
$allCategories = app['rinvex.categories.category']->first[];

// Get instance of your model
$post = new \App\Models\Post::find[];

// Get attached categories collection
$post->categories;

// Get attached categories query builder
$post->categories[];
0

Kết quả của phép toán là giá trị boolean cho biết danh mục có thay đổi vị trí hay không

Hạn chế

Các ràng buộc khác nhau có thể được áp dụng cho trình tạo truy vấn

  • whereIsRoot[] để chỉ nhận các danh mục gốc;
  • whereIsafter[$id] để lấy mọi danh mục [không chỉ anh chị em] theo sau danh mục có id được chỉ định;
  • whereIsB Before[$id] để nhận mọi danh mục trước danh mục có id được chỉ định

Ràng buộc hậu duệ

// Get all categories
$allCategories = app['rinvex.categories.category']->first[];

// Get instance of your model
$post = new \App\Models\Post::find[];

// Get attached categories collection
$post->categories;

// Get attached categories query builder
$post->categories[];
1

Ràng buộc tổ tiên

// Get all categories
$allCategories = app['rinvex.categories.category']->first[];

// Get instance of your model
$post = new \App\Models\Post::find[];

// Get attached categories collection
$post->categories;

// Get attached categories query builder
$post->categories[];
2

php artisan rinvex:migrate:categories
40 có thể là khóa chính của mô hình hoặc thể hiện của mô hình

xây dựng một cái cây

Sau khi nhận được một tập hợp các danh mục, bạn có thể chuyển đổi nó thành cây. Ví dụ

// Get all categories
$allCategories = app['rinvex.categories.category']->first[];

// Get instance of your model
$post = new \App\Models\Post::find[];

// Get attached categories collection
$post->categories;

// Get attached categories query builder
$post->categories[];
3

Điều này sẽ lấp đầy các mối quan hệ

// Single category id
$post->attachCategories[1];

// Multiple category IDs array
$post->attachCategories[[1, 2, 5]];

// Multiple category IDs collection
$post->attachCategories[collect[[1, 2, 5]]];

// Single category model instance
$categoryInstance = app['rinvex.categories.category']->first[];
$post->attachCategories[$categoryInstance];

// Single category slug
$post->attachCategories['test-category'];

// Multiple category slugs array
$post->attachCategories[['first-category', 'second-category']];

// Multiple category slugs collection
$post->attachCategories[collect[['first-category', 'second-category']]];

// Multiple category model instances
$categoryInstances = app['rinvex.categories.category']->whereIn['id', [1, 2, 5]]->get[];
$post->attachCategories[$categoryInstances];
15 và
php artisan rinvex:migrate:categories
44 trên mọi danh mục trong tập hợp và bạn có thể hiển thị cây bằng thuật toán đệ quy

// Get all categories
$allCategories = app['rinvex.categories.category']->first[];

// Get instance of your model
$post = new \App\Models\Post::find[];

// Get attached categories collection
$post->categories;

// Get attached categories query builder
$post->categories[];
4

Điều này sẽ xuất ra một cái gì đó như thế này

// Get all categories
$allCategories = app['rinvex.categories.category']->first[];

// Get instance of your model
$post = new \App\Models\Post::find[];

// Get attached categories collection
$post->categories;

// Get attached categories query builder
$post->categories[];
5

Xây dựng cây phẳng

Ngoài ra, bạn có thể xây dựng một cây phẳng. một danh sách các danh mục trong đó các danh mục con nằm ngay sau danh mục mẹ. Điều này hữu ích khi bạn nhận các danh mục có thứ tự tùy chỉnh [tôi. e. theo thứ tự bảng chữ cái] và không muốn sử dụng đệ quy để lặp lại các danh mục của bạn

// Get all categories
$allCategories = app['rinvex.categories.category']->first[];

// Get instance of your model
$post = new \App\Models\Post::find[];

// Get attached categories collection
$post->categories;

// Get attached categories query builder
$post->categories[];
6

Nhận một cây con

Đôi khi bạn không cần tải toàn bộ cây mà chỉ cần tải một số cây con của danh mục cụ thể

// Get all categories
$allCategories = app['rinvex.categories.category']->first[];

// Get instance of your model
$post = new \App\Models\Post::find[];

// Get attached categories collection
$post->categories;

// Get attached categories query builder
$post->categories[];
7

Bây giờ

// Single category id
$post->attachCategories[1];

// Multiple category IDs array
$post->attachCategories[[1, 2, 5]];

// Multiple category IDs collection
$post->attachCategories[collect[[1, 2, 5]]];

// Single category model instance
$categoryInstance = app['rinvex.categories.category']->first[];
$post->attachCategories[$categoryInstance];

// Single category slug
$post->attachCategories['test-category'];

// Multiple category slugs array
$post->attachCategories[['first-category', 'second-category']];

// Multiple category slugs collection
$post->attachCategories[collect[['first-category', 'second-category']]];

// Multiple category model instances
$categoryInstances = app['rinvex.categories.category']->whereIn['id', [1, 2, 5]]->get[];
$post->attachCategories[$categoryInstances];
17 chứa con của loại
// Single category id
$post->attachCategories[1];

// Multiple category IDs array
$post->attachCategories[[1, 2, 5]];

// Multiple category IDs collection
$post->attachCategories[collect[[1, 2, 5]]];

// Single category model instance
$categoryInstance = app['rinvex.categories.category']->first[];
$post->attachCategories[$categoryInstance];

// Single category slug
$post->attachCategories['test-category'];

// Multiple category slugs array
$post->attachCategories[['first-category', 'second-category']];

// Multiple category slugs collection
$post->attachCategories[collect[['first-category', 'second-category']]];

// Multiple category model instances
$categoryInstances = app['rinvex.categories.category']->whereIn['id', [1, 2, 5]]->get[];
$post->attachCategories[$categoryInstances];
18

Nếu bạn không cần danh mục

// Single category id
$post->attachCategories[1];

// Multiple category IDs array
$post->attachCategories[[1, 2, 5]];

// Multiple category IDs collection
$post->attachCategories[collect[[1, 2, 5]]];

// Single category model instance
$categoryInstance = app['rinvex.categories.category']->first[];
$post->attachCategories[$categoryInstance];

// Single category slug
$post->attachCategories['test-category'];

// Multiple category slugs array
$post->attachCategories[['first-category', 'second-category']];

// Multiple category slugs collection
$post->attachCategories[collect[['first-category', 'second-category']]];

// Multiple category model instances
$categoryInstances = app['rinvex.categories.category']->whereIn['id', [1, 2, 5]]->get[];
$post->attachCategories[$categoryInstances];
18, thay vào đó hãy làm theo

// Get all categories
$allCategories = app['rinvex.categories.category']->first[];

// Get instance of your model
$post = new \App\Models\Post::find[];

// Get attached categories collection
$post->categories;

// Get attached categories query builder
$post->categories[];
8

Đang xóa danh mục

Để xóa một danh mục

// Get all categories
$allCategories = app['rinvex.categories.category']->first[];

// Get instance of your model
$post = new \App\Models\Post::find[];

// Get attached categories collection
$post->categories;

// Get attached categories query builder
$post->categories[];
9

QUAN TRỌNG. Bất kỳ hậu duệ nào thuộc danh mục đó cũng sẽ bị xóa

QUAN TRỌNG. Các danh mục được yêu cầu xóa dưới dạng mô hình, đừng thử xóa chúng bằng truy vấn như vậy

// Single category id
$post->attachCategories[1];

// Multiple category IDs array
$post->attachCategories[[1, 2, 5]];

// Multiple category IDs collection
$post->attachCategories[collect[[1, 2, 5]]];

// Single category model instance
$categoryInstance = app['rinvex.categories.category']->first[];
$post->attachCategories[$categoryInstance];

// Single category slug
$post->attachCategories['test-category'];

// Multiple category slugs array
$post->attachCategories[['first-category', 'second-category']];

// Multiple category slugs collection
$post->attachCategories[collect[['first-category', 'second-category']]];

// Multiple category model instances
$categoryInstances = app['rinvex.categories.category']->whereIn['id', [1, 2, 5]]->get[];
$post->attachCategories[$categoryInstances];
0

Điều đó sẽ phá vỡ cây

phương pháp trợ giúp

// Single category id
$post->attachCategories[1];

// Multiple category IDs array
$post->attachCategories[[1, 2, 5]];

// Multiple category IDs collection
$post->attachCategories[collect[[1, 2, 5]]];

// Single category model instance
$categoryInstance = app['rinvex.categories.category']->first[];
$post->attachCategories[$categoryInstance];

// Single category slug
$post->attachCategories['test-category'];

// Multiple category slugs array
$post->attachCategories[['first-category', 'second-category']];

// Multiple category slugs collection
$post->attachCategories[collect[['first-category', 'second-category']]];

// Multiple category model instances
$categoryInstances = app['rinvex.categories.category']->whereIn['id', [1, 2, 5]]->get[];
$post->attachCategories[$categoryInstances];
1

Kiểm tra tính nhất quán

Bạn có thể kiểm tra xem một cái cây có bị gãy không [i. e. có một số lỗi cấu trúc]

// Single category id
$post->attachCategories[1];

// Multiple category IDs array
$post->attachCategories[[1, 2, 5]];

// Multiple category IDs collection
$post->attachCategories[collect[[1, 2, 5]]];

// Single category model instance
$categoryInstance = app['rinvex.categories.category']->first[];
$post->attachCategories[$categoryInstance];

// Single category slug
$post->attachCategories['test-category'];

// Multiple category slugs array
$post->attachCategories[['first-category', 'second-category']];

// Multiple category slugs collection
$post->attachCategories[collect[['first-category', 'second-category']]];

// Multiple category model instances
$categoryInstances = app['rinvex.categories.category']->whereIn['id', [1, 2, 5]]->get[];
$post->attachCategories[$categoryInstances];
2

Thống kê lỗi cây sẽ trả về một mảng với các khóa sau

  • php artisan rinvex:publish:categories
    00 -- số danh mục có tập hợp giá trị
    php artisan rinvex:publish:categories
    01 và
    php artisan rinvex:publish:categories
    02 sai
  • php artisan rinvex:publish:categories
    03 -- số danh mục có cùng giá trị
    php artisan rinvex:publish:categories
    01 hoặc
    php artisan rinvex:publish:categories
    02
  • php artisan rinvex:publish:categories
    06 -- số danh mục có giá trị
    php artisan rinvex:publish:categories
    07 không hợp lệ không tương ứng với giá trị
    php artisan rinvex:publish:categories
    01 và
    php artisan rinvex:publish:categories
    02
  • php artisan rinvex:publish:categories
    10 -- số danh mục có
    php artisan rinvex:publish:categories
    07 trỏ đến danh mục không tồn tại

sửa chữa cây

Cây danh mục hiện có thể được sửa nếu bị hỏng. Sử dụng thông tin kế thừa từ cột

php artisan rinvex:publish:categories
07, các giá trị
// Single category id
$post->attachCategories[1];

// Multiple category IDs array
$post->attachCategories[[1, 2, 5]];

// Multiple category IDs collection
$post->attachCategories[collect[[1, 2, 5]]];

// Single category model instance
$categoryInstance = app['rinvex.categories.category']->first[];
$post->attachCategories[$categoryInstance];

// Single category slug
$post->attachCategories['test-category'];

// Multiple category slugs array
$post->attachCategories[['first-category', 'second-category']];

// Multiple category slugs collection
$post->attachCategories[collect[['first-category', 'second-category']]];

// Multiple category model instances
$categoryInstances = app['rinvex.categories.category']->whereIn['id', [1, 2, 5]]->get[];
$post->attachCategories[$categoryInstances];
12 và
php artisan rinvex:publish:categories
14 phù hợp được đặt cho mọi danh mục

// Single category id
$post->attachCategories[1];

// Multiple category IDs array
$post->attachCategories[[1, 2, 5]];

// Multiple category IDs collection
$post->attachCategories[collect[[1, 2, 5]]];

// Single category model instance
$categoryInstance = app['rinvex.categories.category']->first[];
$post->attachCategories[$categoryInstance];

// Single category slug
$post->attachCategories['test-category'];

// Multiple category slugs array
$post->attachCategories[['first-category', 'second-category']];

// Multiple category slugs collection
$post->attachCategories[collect[['first-category', 'second-category']]];

// Multiple category model instances
$categoryInstances = app['rinvex.categories.category']->whereIn['id', [1, 2, 5]]->get[];
$post->attachCategories[$categoryInstances];
3

Ghi chú. Kiểm tra gói Nested Sets để biết thêm chi tiết

Nhật ký thay đổi

Tham khảo Changelog để biết toàn bộ lịch sử của dự án

Hỗ trợ

Các kênh hỗ trợ sau có sẵn trong tầm tay của bạn

  • Trò chuyện trên Slack
  • Trợ giúp về Email
  • Theo dõi trên Twitter

Đóng góp & Giao thức

Cảm ơn bạn đã xem xét đóng góp cho dự án này. Hướng dẫn đóng góp có thể được tìm thấy trong ĐÓNG GÓP. md

Báo cáo lỗi, yêu cầu tính năng và yêu cầu kéo rất được hoan nghênh

Lỗ hổng bảo mật

Chúng tôi muốn đảm bảo rằng gói này an toàn cho mọi người. Nếu bạn đã phát hiện ra một lỗ hổng bảo mật trong gói này, chúng tôi đánh giá cao sự giúp đỡ của bạn trong việc tiết lộ nó cho chúng tôi một cách có trách nhiệm

Tiết lộ công khai một lỗ hổng có thể khiến toàn bộ cộng đồng gặp rủi ro. Nếu bạn phát hiện ra mối lo ngại về bảo mật, vui lòng gửi email cho chúng tôi theo địa chỉ help@rinvex. com. Chúng tôi sẽ làm việc với bạn để đảm bảo rằng chúng tôi hiểu phạm vi của vấn đề và chúng tôi giải quyết đầy đủ mối lo ngại của bạn. Chúng tôi xem xét thư từ được gửi tới help@rinvex. com ưu tiên cao nhất của chúng tôi và làm việc để giải quyết mọi vấn đề phát sinh nhanh nhất có thể

Sau khi lỗ hổng bảo mật được khắc phục, bản phát hành hotfix bảo mật sẽ được triển khai sớm nhất có thể

Giới thiệu về Rinvex

Rinvex là startup giải pháp phần mềm, chuyên về giải pháp doanh nghiệp tích hợp cho doanh nghiệp vừa và nhỏ được thành lập tại Alexandria, Ai Cập từ tháng 6/2016. Chúng tôi tin rằng động lực của chúng tôi là Giá trị, Phạm vi tiếp cận và Tác động là điều khiến chúng tôi khác biệt và giải phóng những khả năng vô tận trong triết lý của chúng tôi thông qua sức mạnh của phần mềm. Chúng tôi muốn gọi nó là Đổi mới với tốc độ của cuộc sống. Đó là cách chúng tôi chia sẻ sự tiến bộ của nhân loại

Chủ Đề