2016-06-30 14 views
2

私はSilverStripe(ない私の選択)を使用していると私は、私はテーブルからいくつかのデータを返す関数を作成しましたSilverstripe文句を言わないの戻りフィールドDB

...単純なことで苦労していますから、関数が1から離れた行にすべてのフィールドのために働く、これは私がやっているものです:

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

私は何かが足りない、私が行う必要がある何か他のものはありますか?

+1

どのようにあなたの 'db'宣言が見えますか?値が '0'なので、何も戻ってこないのでしょうか? – bummzack

+0

これは例ですか、これは本当の機能ですか? $ dataobject-> LotNumber()は$ dataobject-> Lotnoとまったく同じように動作するため、少し不必要です。テンプレート環境で使用すると、Dbfieldオブジェクトではなく値が返されます。 – jberculo

答えて

2

シルバーストライプは、魔法の__call()機能を利用しています。このため、カスタムgetterssettersは(自分自身を呼び出すことができるので)少し問題になることがあります。別のメソッド名を選択することで簡単に回避することができます。

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

ここで自分自身を呼び出すことはどのように問題になるでしょうか? – jberculo

+0

与えられたコードでは、問題はありません。しかし、彼はそれが動作しないため、これを投稿しました。だから私は '$ db'と同じ名前(または' getLotNo')を持つ関数がエラー/通知を与えるようになるかもしれないと結論づけました: '未定義のプロパティ' –

0

最初にコードを表示する必要があります。

LotNoはいくつかの範囲にありますか?

dbフィールドLotNoにアクセスするには、静的であることを定義します。$dbプロパティ。

private static $db = array(
    'LotNo' => 'Type' 
); 

をあなたは、このようにアクセスすることができるより:あなたが持っている必要があります

public function LotNumber() { 
    return $this->LotNo; 
} 
関連する問題