0

Web サイトの速度を最適化し、リレーショナル (選択) フィールド データを含むすべてのデータを 1 回のクエリで取得したいと考えています。どうやってするか?

これまでの私の調査結果の下に:

$pod->field('relational_field');追加のクエリを実行すると実行されることに気付きました。

名前フィールドリレーショナル(選択)のカテゴリ フィールドを持つポッドを想定します。

// This code below will behave unexpected 
$pod = pods( 'pod', array(
   'where' => array(...),
   'select' => array('t.name', 'category.name AS category_name')
));

2 つのカテゴリにリンクされた1 つの Pod アイテムを作成したと仮定すると、select オプションの category.name AS category_name により、2 つの結果が得られます。ポッドに 1 つのカテゴリが割り当てられている場合は、1 つの結果が得られます。

結果は次のとおりです。

array (size=2)
  0 => 
    object(stdClass)[2928]
      public 'name' => string 'My pod 1' (length=8)
      public 'category' => string 'Category 1' (length=10)
  1 => 
    object(stdClass)[2929]
      public 'name' => string 'My pod 1' (length=8)
      public 'category' => string 'Category 2' (length=10) // <-- The difference is only in category

私が本当に欲しいのは、配列としての「カテゴリ」キーの 2 つのカテゴリのデータです。それは可能ですか?

(もともとPods.ioに投稿されたもの)

4

1 に答える 1

1

これは近いです。「select」パラメーターは、フィールドの配列ではなく、SQL SELECT 句に指定する文字列にする必要があります。「where」パラメーターと同じなので、次のようになります。

$pod = pods( 'pod', array(
   'where' => 'where params as a string',
   'select' => 't.name,category.name AS category_name')
));

field()またはを使用してデータを取得する場合display()は、ドット表記の代わりに別名の「category_name」を使用します。

于 2015-08-12T20:42:50.277 に答える