Mysql
 sql >> база данни >  >> RDS >> Mysql

Използване на Eloquent полиморфни връзки за категоризиране на данни в Laravel

Е, вашата база данни и дефинициите на вашите модели изглеждат добре, както и кодът ви за добавяне на категория към статия. Въпреки това кодът ви за добавяне на статия към категория е малко по-грешен.

Първо, няма $category->articles() метод. За достъп до свързаните обекти използвате дефинираната си връзка:$category->categorizable() . Също така атрибутът на връзката, $category->categorizable ще съдържа заредения свързан обект и автоматично ще бъде или Article или Service обект, в зависимост от това, което е свързано.

Второ, това е morphTo() страна на връзката; той се държи като belongsTo() , и има подобни методи. Например, няма save() метод, но имате associate() метод. Това означава, че първо трябва да създадете статията си и след това да я свържете с категорията. Също така, associate() не записва автоматично, така че трябва да извикате и това.

$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. Избиране на честотата на резултат, който може да се появи в множество колони (SQL)

  2. Изпълнете многократна заявка за изтриване на sql в mysql за php

  3. MySQL TAN() Функция – Връща тангенса на стойност в MySQL

  4. MySQL заявка:Съпоставете стойност, разделена със запетая, с колона, съдържаща низ, разделен със запетая

  5. избройте всички таблици в база данни с MySQLi