Rumah  >  Artikel  >  rangka kerja php  >  Pembangunan Laravel: Bagaimana untuk membina model pangkalan data menggunakan Laravel Eloquent?

Pembangunan Laravel: Bagaimana untuk membina model pangkalan data menggunakan Laravel Eloquent?

WBOY
WBOYasal
2023-06-14 08:21:391481semak imbas

Pembangunan Laravel: Bagaimana untuk menggunakan Laravel Eloquent untuk membina model pangkalan data?

Laravel ialah rangka kerja PHP popular yang menyediakan alat operasi pangkalan data yang berkuasa dan mudah digunakan - Laravel Eloquent. Pada masa lalu, menggunakan PHP untuk melaksanakan operasi pangkalan data tidak dapat tidak memerlukan penulisan sejumlah besar pernyataan SQL yang panjang dan kod yang menyusahkan Walau bagaimanapun, menggunakan Laravel Eloquent boleh membina model pangkalan data dengan mudah dan mencapai pembangunan dan penyelenggaraan yang pantas. Artikel ini akan memperkenalkan cara menggunakan Laravel Eloquent untuk membina model pangkalan data.

1. Cipta jadual pangkalan data

Pertama, anda perlu mencipta jadual pangkalan data melalui pemindahan pangkalan data (Migrasi). Dalam Laravel, proses ini boleh dicapai menggunakan tukang alat baris arahan. Masukkan:

php artisan make:migration create_users_table

dalam baris arahan ini akan membuat fail pemindahan dalam direktori app/pangkalan data/penghijrahan nama fail ialah tarikh dan masa semasa serta nama pemindahan, seperti 2019_08_17_000000_create_users_table. php. Ubah suai fail migrasi dan tulis struktur pangkalan data yang sepadan.

Schema::create('users', function (Blueprint $table) {
    $table->increments('id');
    $table->string('name');
    $table->string('email')->unique();
    $table->timestamp('email_verified_at')->nullable();
    $table->string('password');
    $table->rememberToken();
    $table->timestamps();
});

Kod di atas mencipta jadual bernama pengguna, yang mengandungi 8 medan: id, nama, e-mel, email_verified_at, kata laluan, remember_token, created_at dan updated_at. Seterusnya, jalankan fail migrasi untuk mencipta jadual pangkalan data.

php artisan migrate

2. Cipta model

Mencipta model (Model) dalam aplikasi ialah langkah pertama dalam menggunakan Laravel Eloquent. Anda boleh mencipta model melalui alat artisan:

php artisan make:model User

Arahan di atas akan mencipta model bernama Pengguna dalam direktori aplikasi, yang sepadan dengan jadual pengguna dalam pangkalan data. Secara lalai, Laravel Eloquent menganggap bahawa nama jadual pangkalan data ialah bentuk jamak bagi nama model Jika anda perlu sepadan dengan nama jadual yang berbeza atau menggunakan sambungan pangkalan data yang berbeza, anda boleh mentakrifkan atribut $table dan $connection dalam model. .

Model ditakrifkan seperti berikut:

namespace App;

use IlluminateDatabaseEloquentModel;

class User extends Model
{
    //
}

3 Atribut model

Dalam model, Laravel Eloquent telah mentakrifkan beberapa atribut dan kaedah lalai, termasuk:

<.>
    Atribut $fillable: Tentukan atribut yang boleh ditetapkan dalam kelompok untuk mengelakkan serangan suntikan. Boleh diisi daripada permintaan cipta/kemas kini menggunakan kaedah create() dan kemas kini().
  1. protected $fillable = [
        'name', 'email', 'password',
    ];
    $hidden attribute: Mentakrifkan atribut yang harus disembunyikan dalam tatasusunan. Apabila bersiri, sifat ini akan disembunyikan.
  1. protected $hidden = [
        'password', 'remember_token',
    ];
    Atribut $casts: Mentakrifkan sifat yang harus ditukar kepada jenis asli (integer, Boolean, titik terapung, dll.) atau objek tersuai.
  1. protected $casts = [
        'email_verified_at' => 'datetime',
    ];
4. Kaedah model

Laravel Eloquent menyediakan beberapa kaedah untuk melaksanakan operasi data dalam model. Berikut ialah beberapa kaedah model yang paling biasa:

    where(): digunakan untuk menambah keadaan WHERE.
  1. $user = User::where('name', 'John')->first();
    find(): digunakan untuk mencari rekod mengikut ID kunci utama model.
  1. $user_id = 1;
    $user = User::find($user_id);
    first(): Mengembalikan rekod pertama ditemui.
  1. $user = User::where('name', 'John')->first();
    get(): Mengembalikan semua rekod yang ditemui.
  1. $users = User::all();
    create(): digunakan untuk mencipta rekod data baharu.
  1. User::create(['name' => 'Taylor', 'email' => 'taylor@example.com', 'password' => 'password']);
    kemas kini(): digunakan untuk mengemas kini rekod.
  1. $user = User::find($user_id);
    $user->name = 'Updated Name';
    $user->save();
    delete(): digunakan untuk memadam rekod.
  1. $user = User::find($user_id);
    $user->delete();
Di atas ialah beberapa kaedah asas model Laravel Eloquent, yang boleh melaksanakan operasi tambah, padam, ubah suai dan pertanyaan pada pangkalan data dengan cepat.

5. Persatuan

Laravel Eloquent juga menyediakan cara yang mudah untuk mentakrifkan pelbagai persatuan: Satu kepada Satu, Satu kepada Banyak , Banyak kepada Banyak dan Hubungan Polimorfik. Berikut ialah beberapa contoh:

    Satu kepada Satu
Dalam perkaitan satu dengan satu, setiap tika model hanya berkaitan dengan satu Contoh model lain dikaitkan. Contohnya, setiap baris dalam jadual pengguna mungkin dikaitkan dengan baris dalam jadual telefon, yang menyimpan nombor telefon pengguna. Dalam model Pengguna, tentukan kaedah phone() untuk mewakili perhubungan satu dengan satu antara model dan model telefon.

class User extends Model
{
    public function phone()
    {
        return $this->hasOne('AppPhone');
    }
}

Dalam model Telefon, tentukan kaedah hasOne() yang bertentangan.

class Phone extends Model
{
    public function user()
    {
        return $this->belongsTo('AppUser');
    }
}

    Satu kepada Banyak
Dalam perhubungan satu-dengan-banyak, satu contoh model dikaitkan dengan contoh model lain, dan satu contoh lain boleh dikaitkan dengan beberapa contoh model. Contohnya, dalam tapak forum, setiap templat mungkin dikaitkan dengan banyak ulasan. Dalam model Thread, tentukan kaedah komen() untuk mewakili hubungan satu-ke-banyak antara model dan model Komen.

class Thread extends Model
{
    public function comments()
    {
        return $this->hasMany('AppComment');
    }
}

Dalam model Komen, tentukan kaedah belongsTo() yang bertentangan.

class Comment extends Model
{
    public function thread()
    {
        return $this->belongsTo('AppThread');
    }
}

    Many to Many
Dalam perhubungan banyak-ke-banyak, tika model dikaitkan dengan banyak contoh model lain, dan setiap tika model Berkaitan juga boleh dikaitkan dengan berbilang contoh model. Contohnya, dalam blog, setiap artikel mungkin mempunyai berbilang tag kategori dan setiap tag juga mungkin mempunyai berbilang artikel. Dalam model Post, tentukan kaedah tag() untuk mewakili perhubungan banyak-ke-banyak antara model dan model Tag.

class Post extends Model
{
    public function tags()
    {
        return $this->belongsToMany('AppTag');
    }
}

Dalam model Tag, takrifkan kaedah belongsToMany() yang bertentangan.

class Tag extends Model
{
    public function posts()
    {
        return $this->belongsToMany('AppPost');
    }
}

  1. 多态关联(Polymorphic Relations)

多态关联允许模型通过多个中介模型与其他模型进行多对多关联。例如,在应用中可以使用comments模型对其他类型的模型进行评论。在Comment模型中,定义一个commentable()方法,表示该模型与所有支持评论的模型之间的多态关系。

class Comment extends Model
{
    public function commentable()
    {
        return $this->morphTo();
    }
}

在支持评论的模型中,例如Post和Video模型中,定义morphMany()方法。

class Post extends Model
{
    public function comments()
    {
        return $this->morphMany('AppComment', 'commentable');
    }
}

class Video extends Model
{
    public function comments()
    {
        return $this->morphMany('AppComment', 'commentable');
    }
}

以上是Laravel Eloquent提供的关联关系,可以让开发者在数据库模型中轻松处理复杂的关系结构。

七、总结

本文介绍了使用Laravel Eloquent构建数据库模型的基础知识,包括创建数据库表、创建模型、模型属性和方法,以及关联关系。Laravel Eloquent提供了一种简单和直观的方式来操作数据库,使得开发者能够快速构建应用程序,并为复杂的数据库结构提供了更干净、易于维护的解决方案。希望这篇文章对你的学习和开发有所帮助。

Atas ialah kandungan terperinci Pembangunan Laravel: Bagaimana untuk membina model pangkalan data menggunakan Laravel Eloquent?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Kenyataan:
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn