Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/282.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php 如何在SilverStripe ORM/Dataobject中定义复合主键_Php_Silverstripe - Fatal编程技术网

Php 如何在SilverStripe ORM/Dataobject中定义复合主键

Php 如何在SilverStripe ORM/Dataobject中定义复合主键,php,silverstripe,Php,Silverstripe,SilverStripe的DataObject为我们提供了以下内容: ID-主键 但是如何定义复合键(主键由2列或更多列组成)?我搜索了文档,在任何地方都找不到此信息。我不确定主键,但您可以改为设置唯一索引。它应该会给你一个类似于前面提到的结果 使用此代码,如果数据库中已存在包含这两个值的记录,则无法使用MyField='test'和MyOtherField='othertest'创建YourDataObject。可以创建一个YourDataObject,其中只有MyField作为test,而M

SilverStripe的DataObject为我们提供了以下内容:

ID-主键


但是如何定义复合键(主键由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"'
        )
    );
}