CakePHP で 2個以上のフィールドを結合して displayField に表示するには
displayField に2個以上のフィールドを結合して出したいことがあります。例えば、「姓」「名」フィールドを繋げるケース。
そんなときは、モデル内で $virtualFields を指定してやれば良いです。
使い方
例えば、$displayFieldに「姓(family_name)」と「名(given_name)」を繋げて表示したい場合は、下のようにします。
<?php
class User extends AppModel {
var $name = 'User';
var $virtualFields = array('full_name' => 'CONCAT(User.family_name , " ", User.given_name)');
var $displayField = 'full_name';
var $order = 'User.id ASC';
?>
注意
- $virtualFields は CakePHP 1.3 から導入されたらしいので、それ以前のバージョンでは使えません。
- 紛らわしいですが、「virtualFields」(複数形)です。「displayField」(単数形)と混同しないように。
- 上記はMySQLでの例です(CONCAT関数で文字列連結している)。PostgreSQLなどでは違うコマンドになるので、各RDBMSのマニュアルを参照してください。