Warisan model dalam Laravel
P粉990008428
P粉990008428 2024-01-10 17:16:44
0
1
340

Andaikan saya mempunyai kelas berikut:

  • Haiwan
  • anjing
  • Golden Retriever
  • Dachshund

Saya mahukan Haiwan sebagai kelas asas, Anjing sebagai subkelas Haiwan dan dua lagi sebagai subkelas Anjing.

Apakah amalan terbaik dalam Laravel? Cipta empat model dan empat jadual berasingan? Atau buat dua jadual, satu untuk haiwan dan satu untuk anjing.

Selain itu, jika setiap haiwan mempunyai fungsi "makeSound", saya boleh melaksanakannya menggunakan antara muka dan kemudian menganggap anjing itu akan menyalak, tetapi baka anjing yang berbeza mungkin mempunyai beberapa penggantian yang membuatkan mereka melakukan sesuatu yang sedikit berbeza. Apa yang saya keliru ialah, bagaimana saya memahami apa itu Golden Retriever?

Jika ia hanya haiwan, saya boleh melakukan ini

$animals = Animal::get();

Tetapi saya tidak pasti caranya:

$daschunds = Daschund::get();

Sebarang nasihat/bahan bacaan mengenai topik ini amatlah dihargai. Saya mempunyai sedikit pengetahuan dalam pengaturcaraan berorientasikan objek tetapi tidak banyak dalam persekitaran Laravel. Saya telah membaca beberapa artikel tetapi tiada yang khusus untuk Laravel.

P粉990008428
P粉990008428

membalas semua(1)
P粉648469285

Memandangkan semua model dalam pelan adalah haiwan, anda semestinya mempunyai meja haiwan dan model haiwan.

Kini, jika model anda yang lebih khusus berkelakuan berbeza daripada haiwan biasa, anda boleh mewarisi model tersebut supaya kaedah mereka mengendalikan perkara dengan betul. Iaitu, jika perbezaan anda hanya dalam PHP, maka anda boleh mewarisi model antara satu sama lain, merujuk jadual yang sama, dan aplikasi anda akan menilai bila dan cara beroperasi dengan model yang berbeza berdasarkan beberapa kriteria.

Jika pangkalan data anda juga mempunyai perbezaan, iaitu, dalam kes anjing, anda memerlukan maklumat tambahan, maka anda boleh membina jadual atribut untuk anjing yang mempunyai kunci asing kepada jadual haiwan.

Akhir sekali, anda boleh memutuskan untuk menggunakan jadual yang berbeza untuk setiap model, dalam hal ini adalah lebih baik untuk melaksanakan kelas haiwan abstrak dan biarkan kelas model haiwan yang lebih konkrit memanjangkannya dengan caranya sendiri, supaya anda boleh menggabungkan kelas haiwan biasa. kandungan dilaksanakan ke dalam kelas haiwan abstrak.

Mengenai kaedah di atas yang manakah lebih baik, ia bergantung pada situasi khusus anda.

Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan