Zend Framework を使用して開発されたアプリケーションに取り組んでいます。私はモデルでリレーションシップを定義しており、それらを楽しく使用できます。
$rowset = $row->findManyToManyRowset('People', 'Jobs');
ただし、行セットが返される列名が「People」と「Jobs」で同じであるため、配列キーがマージされ、最終的な行セットからデータの一部が失われるという問題が発生しました。
Zend_Db_Select
オブジェクトをパラメーターの 1 つとして渡すことができることは理解findManyToManyRowset()
していますが、この場合の使用方法を説明するドキュメントが見つかりません。
$select = $this->select()->from(array(
'p' => 'people',
'j' => 'jobs'
),
array(
'person_id' => 'p.id',
'job_id' => 'j.id',
'person_code' => 'p.code',
'job_code' => 'j.code'
)
);
上記のコードを使用しようとすると、次のようなメッセージが表示されます。
Error: No reference rule "" from table People to table Jobs
これをどのように行うべきかについて誰かが私に教えてもらえますか? データベース内の列名を変更できることはわかっていますが、DB 構造を再設計して関連するすべてのコードを更新するよりも、コードを変更したいと考えています。
注: 上記のように何らかの形式の列エイリアスを使用しないと、返される行セットは次のようになります (つまり、同じ名前の列がマージされます)。
[_data:protected] => Array
(
[id] => 1
[code] => SX342
)
乾杯、
マット