ORM Datamaperで自己関係(アップスチーム)参加を作成する方法を検討しています。私の自己関係クラスは次のようになります。
<?php
class Prospect extends DataMapper{
var $has_one =array(
'parent' => array(
'class' => 'prospect',
'other_field'=>'prospect'
),
'prospect' => array(
'other_field' => 'parent'
)
);
}
そして私はリストしようとします
include_related (parent)
$p->include_related('parent')->get();
エラーが発生しました致命的なエラー:[..]application/libraries/Datamapper.php
2739行目の配列としてProspectタイプのオブジェクトを使用できません
できます
$p->include_related('prospect')->get();
しかし、この場合、私は間違った参加をしました。
SELECT `prospects`.*, `prospect_prospects`.`id` AS prospect_id, `prospect_prospects`.`name` LEFT OUTER JOIN `prospects` prospect_prospects ON `prospects`.`id` = `prospect_prospects`.`parent_id`
結果は、子->親(上流の関係)ではなく、親->子(下流の関係)の関係を示しています。
SELECT `prospects`.*, `prospect_prospects`.`id` AS prospect_id, `prospect_prospects`.`name` LEFT OUTER JOIN `prospects` prospect_prospects ON `prospects`.`parent_id` = `prospect_prospects`.`id`
それを行うためのヒント、そして私がそれを変更しなければならないことは何ですか?そして、どのように良いアップストリーム関係クラス/ phpコードを見る必要がありますか?
ps:直接SQLクエリは素晴らしい働きをします。