最近、thinkPHP を使いたいと思っています。同僚から聞いた話ですが、比較的簡単だと聞いたので、詳しく説明されているドキュメントを読んでみました。その後、使い続けたときに、次の問題に遭遇しました。モデルにメソッドを追加する モデル関連のメソッドの多くは何度も使用され、モデルの「管理」下にある必要があるため、それらはモデル クラスに記述する必要があります。 。
通常どおりモデルとコントローラーを構築し (私は 3.2 を使用しました)、コントローラーの関数でそれらを呼び出します。以下のコード:
?
<?php use Think\Model; class ControllerModel extends Model { public function find_or_create($ctlName){ var_dump($ctlName); $condition['name'] = $ctlName; $cls = $this->where($condition)->find(); if($cls){ return $cls; }else{ $data = array(); $data['name'] = $ctlName; $data['fazenda_id'] =1 ; $id = $this -> add($data); return $id; } } }?>
? コントローラー コード:
<?phpnamespace Record\Controller;use Think\Controller;use Think\Log;class IndexController extends Controller { public function sync() { $controllerName = I('post.controller', '控制器'); $ctlModel = M('Controller'); $ctl = $ctlModel -> find_or_create($controllerName); $data = array(); $data['ctl'] = $ctl; echo json_encode($data); } }
? このモデルの名前は、このモデルの意味からコントローラーと呼ばれます。したがってコントローラーと呼ばれます。この方法で使用すると、ThinkModel:find_or_create メソッドが存在しないという問題が発生します。確認後、変更する必要がある点が 3 つあります:
- M メソッドを D メソッドに変更
- モデルに名前空間を追加
- コントローラーで名前空間を使用
上記の3点を実行するだけで、見つけるのに半日近くかかりました。また、thinkphp のチュートリアルは非常に簡単に始めることができますが、一部の詳細な質問については十分に説明されていないと思います。もしかしたら短い時間がかかったかもしれません。
?