Nette Documentation Preview

syntax
型変換
***

.[perex]
Nette Databaseは、データベースから返された値を対応するPHP型に自動的に変換します。


日付と時刻
-----

時間データは`Nette\Utils\DateTime`オブジェクトに変換されます。時間データを不変の`Nette\Database\DateTime`オブジェクトに変換したい場合は、[設定 |configuration]で`newDateTime`オプションをtrueに設定します。

```php
$row = $database->fetch('SELECT created_at FROM articles');
echo $row->created_at instanceof DateTime; // true
echo $row->created_at->format('Y年n月j日');
```

MySQLの場合、データ型`TIME`は`DateInterval`オブジェクトに変換されます。


ブール値
----

ブール値は自動的に`true`または`false`に変換されます。[設定 |configuration]で`convertBoolean`を設定すると、MySQLでは`TINYINT(1)`が変換されます。

```php
$row = $database->fetch('SELECT is_published FROM articles');
echo gettype($row->is_published); // 'boolean'
```


数値
---------------

数値は、データベースのカラム型に応じて`int`または`float`に変換されます:

```php
$row = $database->fetch('SELECT id, price FROM products');
echo gettype($row->id);    // integer
echo gettype($row->price); // float
```


カスタム正規化
-------

`setRowNormalizer(?callable $normalizer)`メソッドを使用して、データベースからの行を変換するためのカスタム関数を設定できます。これは、たとえばデータ型の自動変換に役立ちます。

```php
$database->setRowNormalizer(function(array $row, ResultSet $resultSet): array {
	// ここで型変換が行われます
	return $row;
});
```

型変換

Nette Databaseは、データベースから返された値を対応するPHP型に自動的に変換します。

日付と時刻

時間データはNette\Utils\DateTimeオブジェクトに変換されます。時間データを不変のNette\Database\DateTimeオブジェクトに変換したい場合は、設定newDateTimeオプションをtrueに設定します。

$row = $database->fetch('SELECT created_at FROM articles');
echo $row->created_at instanceof DateTime; // true
echo $row->created_at->format('Y年n月j日');

MySQLの場合、データ型TIMEDateIntervalオブジェクトに変換されます。

ブール値

ブール値は自動的にtrueまたはfalseに変換されます。設定convertBooleanを設定すると、MySQLではTINYINT(1)が変換されます。

$row = $database->fetch('SELECT is_published FROM articles');
echo gettype($row->is_published); // 'boolean'

数値

数値は、データベースのカラム型に応じてintまたはfloatに変換されます:

$row = $database->fetch('SELECT id, price FROM products');
echo gettype($row->id);    // integer
echo gettype($row->price); // float

カスタム正規化

setRowNormalizer(?callable $normalizer)メソッドを使用して、データベースからの行を変換するためのカスタム関数を設定できます。これは、たとえばデータ型の自動変換に役立ちます。

$database->setRowNormalizer(function(array $row, ResultSet $resultSet): array {
	// ここで型変換が行われます
	return $row;
});