2016-07-13 5 views
1

で空の配列を返します。

$posts_pins = DB::table('pins') 
     ->join('posts', 'posts.id', '=', 'pins.post_id') 
     ->where('pins.post_id', '=', $posts_id) 
     ->get(); 

      var_dump($posts_id); 
      exit(); 

出力:

object(Illuminate\Support\Collection)[199] 
    protected 'items' => 
    array (size=24) 
     0 => int 62 
     1 => int 63 
     2 => int 64 
     3 => int 65 
     4 => int 66 

var_dump($posts_pins)は空の配列を戻しますながら...何か案は ?

+0

Eloquentルートに移動したくないですか? –

+0

'$ posts_id'は設定されていて意味がありますか? var_dump(DB :: table( 'pins') - > join( 'posts'、 'posts.id'、 '='、 'pins.post_id') - >ここで( 'pins.post_id '、' = '、$ posts_id) - > toSql()); '?そのクエリは理にかなっていますか? '$ posts_id'の値でそのクエリを実行するとどうなりますか? – Samsquanch

+0

'='は単一の値をテストするためのものです。複数の値を渡しているので、 'in'が必要です。 –

答えて

0

あなたvar_dump($posts_id)に基づいて、私はあなたがwhereIn句、そしておそらくtoArray()が必要と言うだろう:

$posts_pins = DB::table('pins') 
      ->join('posts', 'posts.id', '=', 'pins.post_id') 
      ->whereIn('pins.post_id', $posts_id->toArray()) 
      ->get(); 

toArray()は必要ないかもしれない、私はwhereInが自動的にそれを変換するかどうかわかりませんか、ない。

理由は、where()メソッドが比較のために単一の値しか受け入れない間に、投稿IDの配列を使用しているからです。whereIn()は複数の値を受け入れます。

+0

完璧な作業...ありがとう –

関連する問題