仮想ページは異なるタイプのページをポイントすることができ、これらのページのすべてがContentPages
、または少なくともHightlighted
dbフィールドを持つページであるという強制はありません。 SiteTree
を作成するときにこれを手動で確認することはできますが、ユーザーはそれを念頭に置いてそれを念頭に置いてください。
ここに、始めるのに役立つ擬似コードがあります。すべての仮想ページがContentPages
であることを前提としています。 AreaPage
によって参照されるVirtualPages
の複数のタイプがある場合、これはおそらく十分ではありません。
$virtualPages = $myAreaPage->RelatedVirtualPages();
$contentSourcePages = ContentPage::get()->byIDs($virtualPage->column('CopyContentFromID'));
$sortedSourcePages = $contentSourcePages->sort('Highlighted','ASC');
あなたはおそらくもinnerJoin
を使用することができますが、その後、あなたは、いくつかの複雑なシナリオにつながる可能性が_Liveテーブルや場合によっては複数のページテーブル(再びちょうどVirtualPage
としてContentPage
を使用していない場合)に対処する必要があります。
更新
だから、私自身の言葉で要約するために、あなたはそれにそれぞれVirtualContentPage
リンクContentPage
からHighlighted
フィールドでソート特定AreaPage
にリンクVirtualContentPages
のリストを必要としています。この要約は、この作品は希望正確である場合:
$sortedVirtualPages = $myAreaPage->RelatedVirtualPages()
->innerJoin('ContentPage', '"ContentPage"."ID" = "VirtualContentPage"."CopyContentFromID"')
->sort('Highlighted DESC');
'RelatedVirtualPages' => 'VirtualPages'は 'RelatedVirtualPages' => 'VirtualPage'にする必要がありますか? – jberculo
はい、あなたは正しいです:-)更新された質問 –