0

関連するモデルが 2 つあります。

  1. 場所には多くのスポーツがあります
  2. スポーツの所属場所

私の Sport モデルでは、次の順序を使用しています。

public $order = 'Location.name ASC, Sport.name ASC';

問題ありません。問題は、場所モデルを介してレコードを削除しようとすると、Sport モデル順序を使用している ON 句で不明な列エラーが発生することです。

SELECT `Sport`.`id` FROM `scheduler`.`sports` AS `Sport` WHERE `Sport`.`location_id` = 6 ORDER BY `Location`.`name` ASC, `Sport`.`name` ASC

Location hasMany アソシエーションに 'dependent' => true があるので、Sport レコードを削除することを期待していますが、select ステートメントが Location テーブルに適切に結合していないのはなぜですか。再帰を 1 に設定しました。また、Location.name を順番に削除すると、正常に動作します。

CakePHP の初心者です。2.x の使用

4

1 に答える 1

0

Sport から $order を削除します。モデルの $order は、関連するモデルではなく、モデルのデフォルトの並べ替え順序を定義します。

クエリを注文する必要がある場合は、次のようにします。

$results = $this->Sport->find('all', array(
    'conditions'=>array(...),
    'contain'=>array(
        'Location'=>array(
            'order'=>array('Location.name'=>'ASC')
        )
    ),
    'order'=>array(
        'Sport.name'=>'ASC'
    )
));

または、Sport Model に $order を残しますが、次のようにする必要があります。

public $order = array('Sport.name'=>'ASC');

同様のものを Location Model に追加します。

public $order = array('Location.name'=>'ASC');
于 2013-02-14T09:16:45.997 に答える