2017-04-03 19 views
0

は、私は20回以上を使用したいので、このコードShortcuting教義コード

$questions = $this->getdoctrine()->getrepository('AppBundle:TicketQuestions')->find($id = 1); 
$question1 = $questions->getQuestions(); 
$option1 = $questions->getOption1(); 
$option2 = $questions->getOption2(); 
$option3 = $questions->getOption3(); 

をショートカットするためにどのような方法がありますです。

私はこのコードを使用して、チケットシステムのデータベースからいくつかの質問とオプションを取得しています。そのために非常に長いコードを書かない方法があることを願っています。

+0

オブジェクトを目的の方法で返し、その関数を呼び出す関数にそのロジックを入れないのはなぜですか? –

+0

@Dimitriに同意します。これらのオプションをすべて配列に返す関数をコントローラに書くと、その関数を '$ options = $ questions-> getOptions();'のようなコードから呼び出すことができます。 – ehymel

+0

ありがとう、あなたは私の問題を解決するためにヒントを与えました。 –

答えて

0

あなたのエンティティを見ることなく言うのは難しいです。たとえば、「質問」エンティティに20個のハードコードされた「オプション」がありますか?

オプションの配列のようなものを使用する場合は、foreachループを使用してこれらのオプションをすべて取得することができます。しかし、それはまた、あなたのデータモデルがどのように見えるかにいくつかの基盤を持っています。

基礎となるデータ構造(配列やDoctrine ArrayCollectionなど)を使用する場合は、まずデータベースとデータスキームを正しいアーキテクチャで構造化する必要があります。

これは、ちょうどショートカットを書くことができるよりもはるかに深い疑問です。データ構造(配列、ArrayCollections)を使用するために基礎となるデータとアーキテクチャが正しく実装されているとは思いません。

+3

非常に正しいですが、答えはまだありませんし、コメントとして投稿してください – kero

0

おかげでどのような方法でみんなが、私はこのようにそれを解決 - >私は、新しい機能

public function callQuestions($id){ 
    $questions = $this->getDoctrine()->getRepository('AppBundle:TicketQuestions')->find($id); 
    $question = $questions->getQuestions(); 
    $option1 = $questions->getOption1(); 
    $option2 = $questions->getOption2(); 
    $option3 = $questions->getOption3(); 
    return array($question,$option1,$option2,$option3); 
} 

を書いて、今私はこのように簡単に呼び出すことができます。

$firstQuestion = TicketsController::callQuestions(1); 

私が作ることもしようとしますそれはより短いが、これは今すぐうまくいく。