--

--

コメント

スポンサーサイト

上記の広告は1ヶ月以上更新のないブログに表示されています。
新しい記事を書く事で広告が消せます。
管理者にだけ表示を許可する

この記事のトラックバックURL

http://welcomevac201world.blog84.fc2.com/tb.php/303-021de80b

12

17

コメント

はまってくやしかったので(>_<) CakePHP Model afterSave

CakePHP1.3.6


さっき

「うわあああああああヽ(`Д´)ノ」

ってなったので書いておく。



処理の中で並び順のリフレッシュが必要になった。

テーブル↓

areas {
id integer not null,
name varchar(100),
sort_no integer
}



こいつの登録の際に、
表示順(sort_no)に3を入れたときに、
すでに3があったら、それ以降を4,5,6..としたかったんです。


「afterSaveでやればいいじゃん( ̄ー+ ̄)キラリ」

class Area extends AppModel {

  function afterSave() {
    $this->sortData();
  }

 // 並び順更新
 function sortData() {

  $result = $this->find('all', array(
   'conditions' => array(
    'is_delete' => false
   ),
   'contain' => array(),
   'order' => array(
    'sort_no' => 'asc',
    'id' => 'desc'
   )
  ));

  if(!empty($result)) {

   $save_ok = true;
   $this->begin();

   foreach($result as $key => $data) {
    $data['Area']['sort_no'] = intval($key) + 1;
    $this->create($data['Area']);

    if(!$this->save()) {
     $save_ok = false;
    }
   }
   if($save_ok) {
    $this->commit();
   } else {
    $this->rollback();
   }
   return $save_ok;
  } else {
   return true;
  }
 }

}



そしたら見事に

[Fri Dec 17 10:07:45 2010] [notice] child pid 5320 exit signal Segmentation fault (11)





考え中.........

考え中.........

考え中.........




完璧に見えたソースは、
sortDataで自分を更新した際に
またafterSaveを呼んで再び処理されるので、
無限ループになっていました\(^o^)/

これで1時間かかった...

素直にControllerから呼べば早かった件
関連記事
スポンサーサイト
管理者にだけ表示を許可する

この記事のトラックバックURL

http://welcomevac201world.blog84.fc2.com/tb.php/303-021de80b

ようこそ!

ブロとも申請フォーム

ブロ友申請大歓迎です!
一覧に表示されるので自動で相互リンクになります!

>> ブロ友申請はこちら <<

検索フォーム

最近のコメント

メールフォーム

名前:
メール:
件名:
本文:

FC2ブログランキング

人気ブログランキング

人気ブログランキング

ブログ村

アクセスランキング

[ジャンルランキング]
育児
1094位
アクセスランキングを見る>>

[サブジャンルランキング]
パパ育児
80位
アクセスランキングを見る>>

やーんは今、

ブロとも一覧

Designed by

Ad

上記広告は1ヶ月以上更新のないブログに表示されています。新しい記事を書くことで広告を消せます。