2016-10-16 8 views
0
私は速く、他のすべてのものを学ぶために、SQLクエリを記述する必要はありませんので、Zend Frameworkには、(3)...私は教義をインストール学習

イムとアーキテクチャ....Zend Frameworkの、教義

最初の質問:

私はDoctrineエンティティマネージャを私のコントローラ(DI付き)にロードするファクトリを設定したことを知っています。

私のエンティティを私のコントローラに入れるのは本当に簡単です...例えばProject ControllerのcreateActionのように私のエンティティを自分のプロジェクトフォームに表示させるのは簡単です(プロジェクト< - >ユーザ多対多)。

私は苦労していることを知っていますが、リポジトリクラスを作成し、これをdoctrineエンティティマネージャの代わりにコントローラに注入する方がよいでしょう。

2番目の質問:

私は(ユーザーによって)私のプロジェクトをフィルタリングする は私がこれを行う必要があります...私は私のエンティティのすべてをコレクションクラスを作成し、それらを注入しシンプルなスリムプロジェクトでとその後、私はコレクション内でフィルタメソッドを呼び出しました...しかし、問題があります。私はデータベースからコレクションにすべてのエンティティをロードしました。より大きなアプリケーションでは、データベースからロードされた多くのエンティティがあると思いますか?

3番目の質問(結論):

私は最高の、ここで練習をいただきました!私のコントローラにDBからデータをロードしたい場合は?

エンティティマネージャからロードしますか?

リポジトリから読み込みます(リポジトリはエンティティマネージャから読み込みます)。

コレクションからロードします(コレクションはリポジトリクラスからデータを読み込み、リポジトリはエンティティマネージャからデータを読み込みます)。

私はページネーションについては考えていませんでした。それは私が次にしなければならないことです。しかし、私の他の質問によく似た質問があります。この質問になど

答えて

1

回答を意味 (私が...これのためのZendモジュールがある知っているが、これはどのように動作するか分からない...これも学ぶすぎ持つ)

すべてのヒントに感謝イム、されていますおそらくすべての意見に基づいています。私はそれが個人的な好みに関するすべてであると言います。ベストプラクティスは、コントローラーで何をするかによって決まります。あなたがそれを必要とする場合はその上で簡単にあなたのエンティティ・マネージャからリポジトリを取得することができます。

$userRepository = $entityManager->getRepository('Application\Entity\User'); 

より一般的には、あなたのリポジトリ/エンティティ・マネージャの周りのカスタムUserService(ラッパークラス)にするかもしれないことUserリソースで使用したいカスタムメソッドを設定します。

私は感謝ちょっと

+0

...これはあなたに少しのに役立ちます願っています!はい、それはプロジェクトで私のworiking中に来る別の質問です。 symfony(fosユーザバンドル)では、コントローラで何かlikt $ this-> user()を実行できます...現在のユーザをActionControllerスコープにアタッチする方法は?-) –

関連する問題