Mysql
 sql >> Teknologi Basis Data >  >> RDS >> Mysql

Bagaimana menjadi lebih Laravel di aplikasi CRUD?

Sepertinya Anda sedang menyiapkan relasi polimorfik, dalam hal ini, saya akan membuat semuanya terpisah yang berarti Anda akan memiliki model untuk Cat, Dog, Turtle, dan PetData. Anda akan memiliki pengontrol untuk CatController, DogController, dan TurtleController. Dan Anda akan memiliki formulir Cat, formulir Anjing, dan formulir Penyu, masing-masing yang juga berisi masukan untuk data yang Anda perlukan untuk tabel pet_info Anda.

Untuk membuat relasi polimorfik, tabel pet_data Anda akan memerlukan beberapa perubahan. Ubah saja kolom tabel menjadi pet_type . Laravel mengharapkan nama tertentu untuk kolom ini dan isinya adalah nama model daripada nama tabel Anda.

Menyiapkan model untuk ini sangat mudah, saya akan melakukan PetData dan Anjing untuk memulai.

class Dog extends Eloquent 
{
    protected $table = 'dogs_data';
    protected $timestamps = false;

    public function petData()
    {
        return $this->morphMany('PetData', 'pet');
    }
}

class PetData extends Eloquent
{
    protected $timestamps = false;

    public function pet()
    {
        return $this->morphTo();
    }
}

Dapat membaca lebih lanjut tentang ini di sini... http://laravel.com/docs/eloquent# hubungan polimorfik

Gagasan memiliki model/pengontrol terpisah untuk semuanya mungkin tampak seperti banyak pekerjaan, tetapi itu berjalan jauh ketika mencoba memelihara atau menambahkan hewan tambahan ke aplikasi Anda karena Anda seharusnya jarang harus memodifikasi kode produksi, menghilangkan kemungkinan memperkenalkan lebih banyak bug saat mencoba menambahkan penyempurnaan ke situs web Anda.

Sekarang menjadi sangat mudah untuk menyimpan hewan peliharaan dan data hewan peliharaan terkait tanpa harus khawatir tentang pet_id dan pet_type di tabel pet_data, Laravel akan mengurusnya untuk Anda. Fungsi pada pengontrol anjing Anda mungkin terlihat seperti ini...

class DogController extends BaseController
{
    public function save()
    {
        $dog = new Dog;
        $dog->name = Input::get('name');
        $dog->age = Input::get('age');
        $dog->save();

        $pet_data = new PetData;
        $pet_data->color = Input::get('color');
        $dog->petData()->save($pet_data);
    }
}

Sejauh membuat pengontrol lain untuk admin, saya akan mengatakan ya, lakukan itu. Tidak ada salahnya untuk menyimpan bagian dari situs web Anda yang Anda anggap berbeda dalam file yang berbeda. Ini tidak hanya membantu dengan organisasi, tetapi sekali lagi, dengan pemisahan masalah, yang mungkin harus Anda baca lebih lanjut.

Ada juga beberapa opsi pihak ketiga yang fantastis untuk mengelola peran. Saya telah menggunakan zizaco/entrust sebelumnya dan ternyata sangat mudah untuk dikelola. Ini mungkin membuat hidup Anda jauh lebih mudah ketika mencoba mengelola siapa yang dapat melakukan apa di aplikasi web Anda.




  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Apakah ada cara di MySQL untuk secara implisit membuat kunci utama untuk sebuah tabel?

  2. Mempercepat perl DBI fetchrow_hashref

  3. Hirarki Banyak-ke-Banyak dengan Banyak Orang Tua - PHP, MySQL

  4. Cara menggemakan baris tabel dari db (php)

  5. Bagaimana cara menyimpan data yang berisi kutipan di MySQL