2

特定の結果に次のコードのレコードが含まれているかどうかを確認する最善の方法を見つけようとして、少し苦労しています。

 $record = ORM::factory('my_table', $id);

私が通常行うことは、何かが見つかった場合に単純に true または false を返す $record->count() または $records->exist() メソッドのようなカウンター メソッドを使用することです。しかし、ORM にはそのような実装はありません。

kohana ORM が SPL カウント可能インターフェースを実装していることは知っているので、php の count() 関数を使用できますが、count() はデータを含まないモデルに対して 1 を返すため、レコードが 1 つしか期待されない場合、これは実際には役に立ちません。 ID が見つかりませんでした。

これは私がそれを回避する方法です:

try {
 $record = ORM::factory('my_table', $id);

 if($record->id === NULL) {
   throw new Exception('The id: ' . $id . ' was not found, use a valid ID');
 }

}

この特定の解決策はあまり良くありません。テーブルに id フィールドが含まれていない場合、またはテーブルで ID を null にすることが許可されている場合はどうなりますか?

モデルにデータが含まれているかどうかを確認するより良い方法が必要です。

何か案は?

4

2 に答える 2

4
try 
{
    $record = ORM::factory('my_table', $id);

    if ( ! $record->loaded()) 
    {
        throw new Exception('The id: ' . $id . ' was not found, use a valid ID');
    }
}

http://kohanaframework.org/3.2/guide/api/ORM#loaded

于 2012-07-09T09:55:54.720 に答える
3
$record = ORM::factory('my_table', $id);

if ($record->loaded())
{
    // Load was successful
}
else
{
    // Error
}
于 2012-07-09T09:57:03.130 に答える