2016-06-24 10 views
0

私はCakephpでカスタムクエリを作成したいと思っています。私が使って何を持っていないCakephp 3.0のカスタムクエリ?

public function view($id = null) 
{ 
    $post = $this->Posts->get($id, [ 
     'contain' => ['Users'] 
    ]); 
    $this->set('post', $post); 
    $this->set('_serialize', ['post']); 
} 

$query = $articles->find() 
->where([ 
    'author_id' => 3, 
    'OR' => [['view_count' => 2], ['view_count' => 3]], 
]); 

しかし、私のPostControllerに私はこれを持っている:すべての例は以下のようにしているQuery Builder

問題:私はこれを読んでいますfind()。そして、私はこれは私が使用するクエリです

コードの最後の部分をやっているのか分からない:

public function index() 
{ 
    $query = $posts->find()->where([ 
    'userfk' => 1 
    ]); 
} 

は、しかし、それは動作していない、私はどのように知りませんクエリの結果を表示します。 コードを正しく動作させるにはどうすればよいですか? ありがとう!

答えて

1

あなたは結果が数$ポスト

を取得する場合、ところでクエリビルダ

http://book.cakephp.org/3.0/en/orm/query-builder.html

PostsController.php

public function index() { 

    $posts = $this -> Posts -> find() -> where(['userfk' => 1]); 

    $this -> set('post', $posts); 

} 

を使用したい場合210

あなたのセットが$this -> set('posts', $posts);とあなたのビューはページネータオプション

を追加

<?php foreach($posts as $post): ?> 
    <!-- your code --> 
<?php endforeach; ?> 

/////// EDIT を持つべきであるPostsController.php

public function index() { 

    $this -> paginate['contain'] = ['Users']; 
    $this -> paginate['conditions'] = ['Posts.userfk' => 1]; 

    $this -> set('posts' , $this -> paginate($this -> Posts)); 
} 
+0

@ JackeBBudyski \t 今、私はビューに問題があります(そしてビューはうまくいきました):Notice(8):未定義インデックス:pageCount [CORE /src/View/Helper/PaginatorHelper.php、line 668]を参照してください。今、私が置く:公共関数インデックス(){$ this-> paginate = ['含む' = '['ユーザー ']]; $ posts = $ this-> Posts-> find() - > where(['userfk' => 1]); $ this-> set( 'posts'、$ this-> paginate()); }ページは私のすべての行を表示する(userfk => 1) –

+0

@FederickJons私の編集の回答を試して –

+0

@ JackeBBuddyski助けてくれてありがとう。 "Posts.userfk '=> 1" ":" Posts.userfk' => $ idUserのようなものではなく、あまりにも難しいですか? この変数にコードを変更するにはどうすればよいですか? –

0
public function index() 
{ 
    $query = $posts->find()->where([ 
    'userfk' => 1 
    ]); 

    //or you can use dynamic finders 
    $query = $posts->findByUserfk(1); 

    $this->set('post', $query); 
} 

すべての結果を印刷する。

pr($post); 

か、機能

で使用する前に結果

foreach($post as $i => $val) { 
    echo $val->userfk; 
} 
+0

あなたは私の質問に答えていません。 –

+0

thats結果を表示する方法....あなたの質問には問題はありません。 –

+0

動的なファインダーを使うことができます... $ post-> findByUserfk(1); –

0

負荷モデルを反復するforeachのを使用することができ、コントローラ

public function initialize() { 
     parent::initialize(); 
     $this->loadModel('Posts'); 
} 

で、インデックス機能を使用してください: -

public function index() 
{ 
$posts = $this->Posts->find('all', ['conditions' => ['userfk' => 1]]); 

$this->set('posts',$posts); 
//pr($posts->toArray());// Print Posts array 
} 
+0

@SonuVermaのお返事ありがとうございましたが、あなたの言ったことを書いたときに私は問題になりました。Notice(8):Undefined v ariable:投稿[APP/Template/Posts/index.ctp、24行目]。そして、ライン24は、次のとおりです。 <?PHPのforeachの($ポストとして$ポスト):?> .... –

+0

パブリック関数指数(){ $ポスト=の$ this - > Posts->「(検索しますすべて '、['条件 '=> [' userfk '=> 1]]); $ this-> set( 'posts'、$ posts); } –

+0

私のインデックス機能をもう一度チェックしてください –

0

($ query = $ posts-> find())で$ potsを渡すのはなぜわかりません。

public function index() 
{ 
$posts = $this->Post->find('all', ['conditions' => ['userfk' => 1]]); 

$this->set('post', $posts); 

//print_r($posts);you can print array. 

} 
+0

今、ビューに問題があり、ビューが正常に動作していました:Notice(8):未定義インデックス:pageCount [CORE/src/View/Helper/PaginatorHelper.php、line 668] 。今、私が置いた場合: 公開関数インデックス() { $ this-> paginate = [ '含む' => ['ユーザー'] ]; $ posts = $ this->投稿 - > find() - > where(['userfk' => 1]); $ this - > set( 'posts'、$ this-> paginate()); }ページは私のすべての行(userfk => 1)が動作していないことを示しています –

関連する問題