2011-10-19 4 views
0

私はモデルOrgです。 モデル内Org私は$ haveAndBelongsToMany = array( 'Patient'、 'Project'、 'C​​ategory')を持っています。 In orgsコントローラアクションビュー でデータベースからデータを取得します$ this-> set( 'org'、$ this-> Org-> find( 'first'、array( 'condition' => array( 'id' => $ id))))); 結果はOKですが、注文を変更したいです。 私は注文結果を望んでいます患者は名前で、名前とカテゴリーはIDでプロジェクトします。 患者、プロジェクト、カテゴリの検索にどのようにORDER BYを使用しますか?あなたは、関連するモデルあなたが設定した実際の結果をソートしたいと思っているならfind()で注文する

<?php 
    class Org extends AppModel { 
     var $hasAndBelongsToMany = array(
      'Patient' => array(
       'order' => array(
        'Patient.name ASC' 
       ) 
      ), 
      'Project' => array(
       'order' => array(
        'Project.name ASC' 
       ) 
      ), 
      'Category' => array(
       'order' => array(
        'Category.id ASC' 
       ) 
      ) 
     ); 
    } 
?> 

答えて

1

が、これはケーキ、あなたがHABTM関係を宣言する際に、関連するモデルの順序はモデルで行われるべきであると仮定すると、 findメソッドに順序配列を渡すことができます。

:あなたは(IDのような)一意のフィールドで最初に見つけやっている場合は、使用することができます

<?php 
    $org = $this->Org->find('all', array(
     'conditions' => array(
      'Org.column_name' => $yourVar 
     ), 
     'order' => array(
      'Patient.name ASC', 
      'Project.name ASC', 
      'Category.id ASC' 
     ) 
    )); 
?> 

findByFIELDNAMEヘルパーに建てられました

+0

最初の方法が私の仕事です。二番目にしないでください。 SQLエラー:1054: 'Order clause'の 'Patient.name'列が不明です – Veiko