私は少し複雑な方法で結果を注文しようとしています。私は、結果を注文するために 'priority'という仮想フィールドを作成しました。ここに私のコードは次のとおりです。CakePHP MySQLの仮想フィールドの問題
public $virtualFields = array(
'priority'=>'(Venue.featured * 5000) + (Venue.views * 2) + ((Venue.image_count > 0) * 500)',
);
私は残して、フィールドの一部を削除する場合さて、これは常に((Venue.image_count> 0)* 500)、すなわち500または0の値だけを返します。
をpublic $virtualFields = array(
'priority'=>'(Venue.featured * 5000) + (Venue.views * 2)',
);
期待される結果が示されます。また、フィールドに別のコンポーネントを追加したいのですが、これは同じ効果があります。コード:この場合
public $virtualFields = array(
'priority'=>'(Venue.featured * 5000) + (Venue.views * 2) + ((CHAR_LENGTH(Venue.blurb) > 0) * 500)',
);
は、再び、フィールドは今まで500か0、すべてのフィールドのない完全な値です。
私は何が起こっているのか分かりません! image_countまたはCHAR_LENGTH(Venue.blurb)のどちらかを測定する仮想フィールドを作成すると問題なく動作しますが、フィールドの他の部分にこれらのいずれかを追加すると失敗します。
おかげで、それはそれを修正しています。理由((Venue.image_count> 0)* 500)は0または500を単独で返します。 – Will