0
私は1対多の関係を持つモデルクラスを持っています。配列としてのrealtionshipを持つレコードを取得する
class Budget extends Phalcon\Mvc\Model
{
public function initialize()
{
$this->setSource('budgets');
$this->hasMany('id', BudgetItem::class, 'budget_id');
}
}
class BudgetItem extends Phalcon\Mvc\Model
{
public function initialize()
{
$this->setSource('budget_items');
$this->belongsTo('budget_id', Budget::class, 'id');
}
}
したがって、1つの予算レコードにはbudget_itemsが多数あります。
$query = $modelsManager->createBuilder()
->addFrom(Budget::class, 'b')
->leftJoin(BudgetItem::class, 'b.id = bi.budget_id', 'bi')
->columns('b.*, bi.*')
->where('b.id = :id:', ['id' => 1])
->getQuery();
$result = $query->execute();
しかし、結果は私のためにかなり奇妙に見える:私は、クエリを構築するように、すべての関連する項目とそのIDで予算を取得したいです。
{
b: {
id: "1"
bi: [
{
id: "9",
budget_id: "1",
amount: "23500"
}, {
id: "10",
budget_id: "1",
amount: "116500"
}
]
}
}
2つの項目の配列に一つだけの予算オブジェクトを取得する方法はあります:
{
b: {
id: "1"
},
bi: {
id: "9",
budget_id: "1",
amount: "23500"
}
},
{
b: {
id: "1"
},
bi: {
id: "10",
budget_id: "1",
amount: "116500"
}
}
私はこのようになりますResultSetを期待していに対し?
この場合、2つのリクエストがあります。 1つは予算用、もう1つはアイテム用です。 したがって、phqlまたはquery builderを使用してレコードとその関係を単一の配列として取得する方法はありませんか? – vansanblch
これは照会のみでは実現できません。 QueryBuilderの方法を使用したい場合は、結果を反復処理し、要求した方法で変換するヘルパー関数を作成します。 –