Mysql
 sql >> Cơ Sở Dữ Liệu >  >> RDS >> Mysql

Sử dụng các mối quan hệ đa hình Eloquent để phân loại dữ liệu trong Laravel

Chà, cơ sở dữ liệu của bạn và các định nghĩa mô hình của bạn trông ổn, cũng như mã của bạn để thêm một danh mục vào một bài báo. Tuy nhiên, mã của bạn để thêm một bài báo vào một danh mục hơi bị lỗi.

Đầu tiên, không có $category->articles() phương pháp. Để truy cập các đối tượng liên quan, bạn sử dụng mối quan hệ đã xác định của mình:$category->categorizable() . Ngoài ra, thuộc tính mối quan hệ, $category->categorizable sẽ chứa đối tượng liên quan được tải và nó sẽ tự động là một Article hoặc một Service đối tượng, tùy thuộc vào những gì có liên quan.

Thứ hai, đây là morphTo() mặt của mối quan hệ; nó hoạt động giống như belongsTo() , và có các phương pháp tương tự. Ví dụ:không có save() nhưng bạn có associate() phương pháp. Điều này có nghĩa là bạn phải tạo bài viết của mình trước, sau đó liên kết nó với danh mục. Ngoài ra, associate() không tự động lưu, vì vậy bạn cũng cần phải gọi như vậy.

$article = new App\Article();
$article->title = 'This is an article title.';
$article->save();

$category = App\Category::find(1);
$category->categorizable()->associate($article);
$category->save();

// showing use of relationship attribute
$related = $category->categorizable;
echo get_class($related);



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Tại sao MySQL khóa vị từ rõ ràng không cho phép các câu lệnh INSERT bên ngoài khóa vị từ

  2. Có bất kỳ đường hầm PHP MySQL HTTP phổ quát nào tốt không?

  3. Ví dụ MONTHNAME () - MySQL

  4. Làm cách nào để xóa các bản sao trên bảng MySQL?

  5. cách sử dụng zend paginate mà không cần tải tất cả kết quả của cơ sở dữ liệu