Nah, database dan definisi model Anda terlihat bagus, serta kode Anda untuk menambahkan kategori ke artikel. Namun, kode Anda untuk menambahkan artikel ke kategori sedikit salah.
Pertama, tidak ada $category->articles()
metode. Untuk mengakses objek terkait, Anda menggunakan hubungan yang ditentukan:$category->categorizable()
. Juga, atribut hubungan, $category->categorizable
akan berisi objek terkait yang dimuat, dan secara otomatis akan menjadi Article
atau Service
objek, tergantung pada apa yang terkait.
Kedua, ini adalah morphTo()
sisi hubungan; itu berperilaku seperti belongsTo()
, dan memiliki metode yang serupa. Misalnya, tidak ada save()
metode, tetapi Anda memiliki associate()
metode. Artinya, Anda harus membuat artikel terlebih dahulu, lalu mengaitkannya dengan kategori. Juga, associate()
tidak menyimpan secara otomatis, jadi Anda juga perlu memanggilnya.
$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);