Rumah >pembangunan bahagian belakang >tutorial php >Bagaimana untuk Mentakrifkan Kunci Utama Komposit dalam Model Laravel 5?

Bagaimana untuk Mentakrifkan Kunci Utama Komposit dalam Model Laravel 5?

DDD
DDDasal
2024-12-03 20:40:12797semak imbas

How to Define Composite Primary Keys in Laravel 5 Models?

Menentukan Kunci Utama Komposit dalam Model Laravel 5

Anda mempunyai jadual dengan dua kunci utama (id dan language_id) dan ingin memasukkannya dalam model Laravel 5 anda. Secara lalai, kunci utama dalam model Laravel ialah "id", tetapi anda memerlukan kunci utama anda sebagai "id" dan "id_language."

Untuk mencapainya, anda boleh menggunakan ciri PHP yang menyesuaikan Eloquent kepada mengendalikan kekunci komposit:

namespace App\Model\Traits; // Adjust this to match your model namespace!

use Illuminate\Database\Eloquent\Builder;

trait HasCompositePrimaryKey
{
    // ... (Code from provided answer)
}

Letakkan sifat ini dalam direktori "Sifat" di bawah direktori model utama anda. Kemudian, tambahkan baris berikut pada bahagian atas mana-mana model kunci komposit:

class MyModel extends Eloquent {
    use Traits\HasCompositePrimaryKey; // *** THIS!!! ***

    /**
     * The primary key of the table.
     * 
     * @var string
     */
    protected $primaryKey = array('key1', 'key2');

    // ...
}

Nota Tambahan:

  • Untuk Laravel versi 5.7 dan ke atas, anda tidak perlu mentakrifkan kaedah getIncrementing dalam sifat anda.
  • Jika anda menghadapi masalah dengan Model::find, anda boleh menambah kaedah cari yang disediakan dalam jawapan.
  • Untuk menggunakan kekunci komposit bersama-sama dengan fungsi pemadaman lembut Eloquent, anda perlu mentakrifkan kaedah deletedAt dan withTrashed.

Atas ialah kandungan terperinci Bagaimana untuk Mentakrifkan Kunci Utama Komposit dalam Model Laravel 5?. 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