0

Cakephp Model-> find()メソッドを使用するとき、結果を別の方法でグループ化したい。

私のスキーマは:

  `id` int(11) NOT NULL AUTO_INCREMENT,
  `deviceid` varchar(255) NOT NULL,
  `user_id` int(11) NOT NULL,
  `sessionid` varchar(255) NOT NULL,
  `ip` text NOT NULL,
  `image_type` varchar(100) NOT NULL DEFAULT 'invalid_image',
  `filename` text NOT NULL,
  `analysis_basic` text COMMENT 'output from the image script',
  `analysis_admin` text,
  `created` datetime DEFAULT NULL,
  `modified` datetime DEFAULT NULL,
  PRIMARY KEY (`id`),
  KEY `sessionid` (`sessionid`)

Cakephpで私はこのようなものを手に入れたいです:

Array
(
    [0] => Array
    (
        [Picture] => Array
        (
            [sessionid] => somevalue
        )
        [0] => Array
        (
            [id] => 32
            [deviceid] => 5124125
            [userid] => 4541221
            ...and all other fileds
        )
        [1] => Array
        (
            [id] => 35
            [deviceid] => 5124125
            [userid] => 4541221
            ...and all other fileds
        )        
    )
    [1] => Array
    (
        [Picture] => Array
        (
            [sessionid] => someothervalue
        )
        [0] => Array
        (
            [id] => 38
            [deviceid] => 5124454
            [userid] => 34241
            ...and all other fileds
        )
        [1] => Array
        (
            [id] => 35
            [deviceid] => 5124454
            [userid] => 34241
            ...and all other fileds
        )    

それはcakephpで可能ですか?または、上記と同様のことを達成するためのより良い方法はありますか?そのような結果を得ることができれば、[0]要素内のすべてのレコードが同じセッションIDを持っていることがわかります。それが理由です。

4

1 に答える 1

0

試す:

$pictures = $this->Picture->find('all');
$grpPicts = array();

foreach($pictures as $p) {
   $sessid = $p['sessionid'];
   $grpPicts[$sessid]['Picture']['sessionid'] = $sessid;
   $grpPicts[$sessid][] = $p;
}

var_dump(array_values($grpPicts));

これが最も洗練されたソリューションではないことは知っていますが、探しているものに近いはずです。

于 2012-05-31T07:09:27.190 に答える