Rumah  >  Artikel  >  rangka kerja php  >  Pengenalan terperinci kepada pengetahuan berkaitan pemadaman persatuan model Laravel

Pengenalan terperinci kepada pengetahuan berkaitan pemadaman persatuan model Laravel

PHPz
PHPzasal
2023-04-06 14:21:171087semak imbas

Laravel ialah rangka kerja PHP yang popular dengan fungsi ORM (Object Relational Mapping) yang berkuasa yang menjadikan manipulasi data lebih mudah. Dalam Laravel, kita boleh menggunakan perkaitan model untuk melaksanakan sambungan dan operasi antara jadual data.

Tetapi kadangkala, kita perlu memadamkan perkaitan model tertentu, jadi kita perlu menggunakan pemadaman perkaitan model Laravel. Di bawah, artikel ini akan memperkenalkan secara terperinci pengetahuan berkaitan pemadaman persatuan model Laravel.

Tubuhkan persatuan model

Sebelum memperkenalkan pemadaman persatuan model, mari kita fahami cara mewujudkan persatuan model. Mengambil perhubungan satu-dengan-banyak sebagai contoh, dalam Laravel, kita boleh menggunakan kaedah hasMany dan belongsTo untuk mewujudkan perhubungan model.

// User 模型
class User extends Model
{
    public function posts()
    {
        return $this->hasMany(Post::class);
    }
}

// Post 模型
class Post extends Model
{
    public function user()
    {
        return $this->belongsTo(User::class);
    }
}

Dalam kod di atas, model Pengguna dan model Pos mewujudkan hubungan satu dengan banyak. Model Pengguna menggunakan kaedah hasMany untuk mentakrifkan perkaitan dengan model Post, dan model Post menggunakan kaedah belongsTo untuk mentakrifkan perkaitan dengan model Pengguna.

Selepas itu kita boleh menggunakan perhubungan ini untuk memanipulasi data. Sebagai contoh, kami boleh menggunakan kod berikut untuk mendapatkan semua artikel pengguna:

$user = User::find(1);
$posts = $user->posts;

Di sini, kami mendapat semua artikel pengguna melalui kaedah siaran model Pengguna. Memandangkan model Pengguna dan model Post mempunyai hubungan satu dengan banyak, $user->posts mengembalikan koleksi model Post yang mengandungi semua siaran pengguna.

Padamkan perkaitan model

Untuk perhubungan satu-ke-banyak, kita boleh menggunakan unset atau null untuk memadamkan perkaitan. Sebagai contoh, kod berikut akan memadamkan semua artikel pengguna:

$user = User::find(1);
$user->posts()->delete();

Dalam kod di atas, kami menggunakan kaedah $user->posts() untuk mendapatkan semua perkaitan artikel pengguna, dan kemudian Panggil kaedah padam untuk memadamnya.

Untuk perhubungan ramai-ke-banyak, kita boleh menggunakan kaedah detach untuk memadamkan perkaitan. Sebagai contoh, kod berikut akan memadamkan artikel daripada senarai ikutan pengguna:

$user = User::find(1);
$post = Post::find(1);

$user->posts()->detach($post->id);

Dalam kod di atas, kami menggunakan kaedah $user->posts() untuk mendapatkan persatuan Senarai ikutan pengguna, dan kemudian gunakan kaedah detach untuk memadam salah satu artikel. Parameter kaedah detach ialah id artikel.

Pemadaman Lata

Dalam beberapa kes khas, kami mungkin perlu memadamkan perkaitannya apabila memadamkan model. Pada masa ini, kita boleh menggunakan fungsi memadam lata Laravel.

Untuk perhubungan satu dengan banyak, kita boleh menggunakan kaedah onDelete('cascade') untuk melaksanakan pemadaman lata. Sebagai contoh, kod berikut akan memadamkan semua siaran pengguna apabila memadamkannya:

// User 模型
class User extends Model
{
    public function posts()
    {
        return $this->hasMany(Post::class)->onDelete('cascade');
    }
}

Dalam kod di atas, kami mentakrifkan pemadaman lata menggunakan kaedah onDelete('cascade'). Dengan cara ini, apabila pengguna dipadamkan, semua artikel yang dikaitkan dengan pengguna itu juga akan dipadamkan.

Untuk perhubungan banyak-ke-banyak, kita boleh menggunakan kaedah detach untuk melaksanakan pemadaman lata. Sebagai contoh, kod berikut akan memadamkan semua artikel menggunakan teg itu apabila memadamkannya:

// Post 模型
class Post extends Model
{
    public function tags()
    {
        return $this->belongsToMany(Tag::class)->withTimestamps();
    }
}

// Tag 模型
class Tag extends Model
{
    public function posts()
    {
        return $this->belongsToMany(Post::class)->withTimestamps()->onDelete('cascade');
    }
}

Dalam kod di atas, kami mentakrifkan lata menggunakan kaedah onDelete('cascade'). Dengan cara ini, apabila teg dipadamkan, semua artikel yang menggunakan teg tersebut akan dipadamkan.

Ringkasan

Fungsi ORM Laravel sangat berkuasa dan boleh melaksanakan operasi perhubungan antara model dengan mudah. Apabila memadamkan perkaitan model, kita boleh menggunakan unset, null, detach, onDelete('cascade') dan kaedah lain untuk memadamkan perkaitan. Pada masa yang sama, pemadaman lata juga merupakan fungsi yang sangat berguna, yang boleh mengelakkan pemadaman data berkaitan secara manual satu demi satu.

Atas ialah kandungan terperinci Pengenalan terperinci kepada pengetahuan berkaitan pemadaman persatuan model Laravel. 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