Php Silverstripe不会从DB返回字段

Php Silverstripe不会从DB返回字段,php,silverstripe,Php,Silverstripe,我正在使用SilverStripe(不是我的选择),我正在为最简单的事情挣扎 我创建了一个函数来从表中返回一些数据,该函数适用于除1之外的行中的每个字段,这就是我正在做的: public function LotNumber() { return $this->LotNo; } 我是否遗漏了什么,还有什么需要做的吗?Silverstripe使用了magic\u call()函数。因此,定制的getter和setter可能会遇到一些麻烦(因为它们可能会自己调用自己)。通过选择另一个

我正在使用SilverStripe(不是我的选择),我正在为最简单的事情挣扎

我创建了一个函数来从表中返回一些数据,该函数适用于除1之外的行中的每个字段,这就是我正在做的:

public function LotNumber() {
    return $this->LotNo;
}

我是否遗漏了什么,还有什么需要做的吗?

Silverstripe使用了magic
\u call()
函数。因此,定制的
getter
setter
可能会遇到一些麻烦(因为它们可能会自己调用自己)。通过选择另一个方法名或将其放入getter中,可以轻松避免此问题:

return $this->getField('LotNo');

首先,你必须显示更多的代码

LotNo
是否在某个范围内

要访问db字段
LotNo
,您需要定义它的static
$db
属性

您必须有:

private static $db = array(
    'LotNo' => 'Type'
);
public function LotNumber() {
    return $this->LotNo;
}
您可以这样访问:

private static $db = array(
    'LotNo' => 'Type'
);
public function LotNumber() {
    return $this->LotNo;
}

您的
db
声明是什么样子的?可能因为值为
0
,所以没有得到任何回报?这是一个示例,还是一个实函数?这有点不必要,因为$dataobject->LotNumber()的作用与$dataobject->Lotno完全相同。在模板环境中使用它只会返回值,而不是Dbfield对象。在这里如何调用自己是一个问题?对于给定的代码,这不会是一个问题。但是他发布了这个,因为它不起作用。因此,我得出结论,可能有一个函数的名称(或
getLotNo
)与他的
$db
中的名称相同,因为这会导致错误/注意:
未定义属性