Mysql
 sql >> Baza danych >  >> RDS >> Mysql

Używanie Eloquent polimorficznych relacji do kategoryzowania danych w Laravel

Cóż, twoja baza danych i definicje modeli wyglądają dobrze, podobnie jak kod dodawania kategorii do artykułu. Jednak Twój kod dodawania artykułu do kategorii jest trochę niepoprawny.

Po pierwsze, nie ma $category->articles() metoda. Aby uzyskać dostęp do powiązanych obiektów, użyj zdefiniowanej relacji:$category->categorizable() . Również atrybut relacji, $category->categorizable będzie zawierać załadowany powiązany obiekt i automatycznie będzie to Article lub Service obiekt, w zależności od tego, co jest powiązane.

Po drugie, jest to morphTo() strona związku; zachowuje się jak belongsTo() i ma podobne metody. Na przykład nie ma save() metody, ale masz associate() metoda. Oznacza to, że najpierw musisz utworzyć swój artykuł, a następnie powiązać go z kategorią. Również associate() nie zapisuje automatycznie, więc musisz to również wywołać.

$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. Wybierz pierwszy i ostatni znacznik czasu, w którym identyfikator użytkownika jest unikalny

  2. sesja php a prędkość mysql

  3. Mysql w zapytaniu o odległość

  4. Wstaw tablicę rekordów do mysql za pomocą Node JS

  5. Tabela Alter MySQL, dodaj kolumnę z unikalną wartością losową