В 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.
Код, скопированный из документации