ホームページ  >  記事  >  バックエンド開発  >  thinkphp のカスタム モデル ステップ

thinkphp のカスタム モデル ステップ

WBOY
WBOYオリジナル
2016-06-13 12:09:131205ブラウズ

thinkPHP のカスタム モデル メソッド

最近、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 のチュートリアルは非常に簡単に始めることができますが、一部の詳細な質問については十分に説明されていないと思います。もしかしたら短い時間がかかったかもしれません。

?

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。