Heim >Backend-Entwicklung >PHP-Tutorial >Wie definiere ich zusammengesetzte Primärschlüssel in Laravel 5-Modellen?

Wie definiere ich zusammengesetzte Primärschlüssel in Laravel 5-Modellen?

DDD
DDDOriginal
2024-12-03 20:40:12759Durchsuche

How to Define Composite Primary Keys in Laravel 5 Models?

Zusammengesetzte Primärschlüssel in Laravel 5-Modellen definieren

Sie haben eine Tabelle mit zwei Primärschlüsseln (id und language_id) und möchten diese einschließen in Ihren Laravel 5-Modellen. Standardmäßig ist der Primärschlüssel in Laravel-Modellen „id“, aber Sie benötigen Ihre Primärschlüssel „id“ und „id_sprache“.

Um dies zu erreichen, können Sie ein PHP-Merkmal verwenden, das sich an Eloquent anpasst Behandeln Sie zusammengesetzte Schlüssel:

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

use Illuminate\Database\Eloquent\Builder;

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

Platzieren Sie dieses Merkmal in einem „Traits“-Verzeichnis unter Ihrem Hauptmodellverzeichnis. Fügen Sie dann die folgende Zeile am Anfang eines beliebigen zusammengesetzten Schlüsselmodells hinzu:

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

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

    // ...
}

Zusätzliche Hinweise:

  • Für Laravel-Versionen 5.7 und höher: Sie müssen die getIncrementing-Methode nicht in Ihrem Merkmal definieren.
  • Wenn Sie Probleme mit Model::find haben, können Sie hinzufügen die in der Antwort bereitgestellte Suchmethode.
  • Um zusammengesetzte Schlüssel in Verbindung mit der Soft-Deleting-Funktion von Eloquent zu verwenden, müssen Sie die Methoden deleteAt und withTrashed definieren.

Das obige ist der detaillierte Inhalt vonWie definiere ich zusammengesetzte Primärschlüssel in Laravel 5-Modellen?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn