Как определить составной первичный ключ в SilverStripe ORM / Dataobject

В DataObject от SilverStripe нам дается следующее:

ID – первичный ключ

Но как вы определяете составной ключ (первичный ключ, состоящий из двух или более столбцов)? Я искал документацию и не могу найти эту информацию нигде.

Я не уверен в первичном ключе, но вместо этого вы можете установить уникальный индекс. Он должен дать вам подобный результат, как указано здесь .

class YourDataObject extends DataObject { private static $db = [ 'MyField' => 'Varchar', 'MyOtherField' => 'Varchar' ]; private static $indexes = array( 'MyIndexName' => array( 'type' => 'unique', // changed this to unique 'value' => '"MyField","MyOtherField"' ) ); } 

С помощью этого кода невозможно создать объект YourDataObject с MyField = 'test' и MyOtherField = 'othertest' если там уже есть запись с BOTH этими значениями в базе данных. Можно создать объект YourDataObject с только MyField как test и MyOtherField как нечто другое.

Тем не менее, рекомендуется проверить это до того, как вы напишете его в своей базе данных, так как вы получите ошибку с ошибкой пользователя в вашем ModelAdmin.

Код, скопированный из документации