logo

パレット - カラフルに🎨

Palette — ビジュアルページビルダー、デザインの専門知識は不要です。

ライブデモ パレットをダウンロード

Scroll
08/05/2020, by maria

クエリの結果は、カスタムクラスに基づくオブジェクトに取得できます。たとえば、ExampleClassという名前のクラスがある場合、次のクエリはexampleClass型のオブジェクトを返します。

$result = $connection->query("SELECT id, title FROM {example_table}", [], [
  'fetch' => 'ExampleClass',
]);

クラスに__construct()メソッドがある場合、オブジェクトが作成され、プロパティがオブジェクトに追加され、その後__construct()メソッドが呼び出されます。たとえば、次のクラスとクエリがある場合です。

class ExampleClass {
  function __construct() {
    // Do something
  }
}

$result = $connection->query("SELECT id, title FROM {example_table}", [], [
  'fetch' => 'ExampleClass',
]);

オブジェクトが作成され、idとtitleプロパティがオブジェクトに追加され、その後__construct()が実行されます。このイベントの順序は、5.2未満のバージョンのPHPのバグに関連しています。

プロパティがオブジェクトに追加される前に実行する必要がある__construct()メソッドがオブジェクトにある場合、次の例でその方法を示します。

$result = $connection->query("SELECT id, title FROM {example_table}");
foreach ($result->fetchAll(PDO::FETCH_CLASS | PDO::FETCH_PROPS_LATE, 'ExampleClass') as $record) {
  // Do something
}

fetchAllに渡される引数も同じように使用できます。PDO::FETCH_CLASSはfetchAllに、返された結果セットを取得し、その値をExampleClass型のオブジェクト(2番目の引数)のプロパティとして追加するよう指示します。PDO::FETCH_PROPS_LATEはfetchAllに、__construct()が呼び出された後に結果セットをオブジェクトのプロパティとして追加するよう指示します。