2個以上のフィールドを結合してdisplayFieldに表示するには

このエントリーをはてなブックマークに追加
はてなブックマーク - 2個以上のフィールドを結合してdisplayFieldに表示するには
Share on Facebook

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のマニュアルを参照してください。

参考

Leave a Comment


NOTE - You can use these HTML tags and attributes:
<a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <strike> <strong>