Php 如何在SilverStripe ORM/Dataobject中定义复合主键
SilverStripe的DataObject为我们提供了以下内容: ID-主键Php 如何在SilverStripe ORM/Dataobject中定义复合主键,php,silverstripe,Php,Silverstripe,SilverStripe的DataObject为我们提供了以下内容: ID-主键 但是如何定义复合键(主键由2列或更多列组成)?我搜索了文档,在任何地方都找不到此信息。我不确定主键,但您可以改为设置唯一索引。它应该会给你一个类似于前面提到的结果 使用此代码,如果数据库中已存在包含这两个值的记录,则无法使用MyField='test'和MyOtherField='othertest'创建YourDataObject。可以创建一个YourDataObject,其中只有MyField作为test,而M
但是如何定义复合键(主键由2列或更多列组成)?我搜索了文档,在任何地方都找不到此信息。我不确定主键,但您可以改为设置唯一索引。它应该会给你一个类似于前面提到的结果 使用此代码,如果数据库中已存在包含这两个值的记录,则无法使用
MyField='test'
和MyOtherField='othertest'
创建YourDataObject
。可以创建一个YourDataObject
,其中只有MyField
作为test,而MyOtherField
作为其他内容
但是,建议您在将其写入数据库之前对此进行检查,因为在ModelAdmin中可能会出现用户不可靠的错误
从Silverstripe专家处复制的代码请说明在这个框架中如何处理复合主键。不要将代码放在ModelAdmin中,而是放在DataObject中。
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"'
)
);
}