2015-05-24 17 views
11

Nazwa kolumny klucza podstawowego w każdym modelu w laravel ram jest id

protected $primaryKey = 'id'; 

I wiem, że mogę to zmienić domyślną nazwę takiego:

protected $primaryKey = 'new_name'; 

Moje pytanie brzmi: Co zrobić, jeśli mam klucz złożony (2 lub więcej kolumn) w tabeli, jak dodać je jako $primaryKey? Czy naprawdę muszę je zdefiniować?

+0

Możliwy duplikat [Jak mogę umieścić klucze złożone w modelach w laravel 5?] (Https://stackoverflow.com/questions/31415213/how-i-can-put-composite-keys-in- models-in-laravel-5) – mopo922

Odpowiedz

6

Z Laravel docs:

$table->primary(array('first', 'last')); 

Edit: I zrozumiał pytanie. Wątek ten może dostarczyć pewnych odpowiedzi: http://forumsarchive.laravel.io/viewtopic.php?pid=34475

W szczególności nadpisując metodę find().

public static function find($primaryOne, $PrimaryTwo) { 
    return Widget::where('primaryOne', '=', $primaryOne) 
     ->where('PrimaryTwo', '=', $PrimaryTwo) 
     ->first(); 
} 
+0

'$ table-> primary (array ('first', 'last'))' zwykle używane w pliku migracyjnym podczas tworzenia tabeli, proszę o 'protected $ primaryKey = ' id'', który istnieje w powiązanym pliku modelu. – Amr

+1

Jestem trochę ponad moją głową, ale nie wygląda na to, że Laravel domyślnie to obsługuje. –

+0

gdzie istnieje ta metoda szukania, aby zastąpić? W mojej klasie modelu nie ma takiej metody do przesłonięcia. –

Powiązane problemy