2017-09-21 5 views
1

laravelで簡単なクエリを使用しようとしていますが、データが返されません。 phpmyadminで同じクエリを実行すると、3行が返されます。laravelを実行したときにnullを返す動作中のクエリ

これはlaravelのコードです。

$pages = DB::table('static_pages') 
    ->where('slug','=','(select slug from static_pages where id='.$id.')') 
     ->get(); 

これは、これが行うクエリです。

select * from `static_pages` where `slug` = (select slug from static_pages where id=2) 

あなたは理由何ができるかを教えてもらえますか?

+0

make as DB:where句の行 – Jishad

+0

モデルについて知っていますか? –

+0

@AjayKumar私はlaravelを初めて使っています。私は以前にCIで働いていました。 CIでは非常に使いやすいモデルでした。私はクラスを作ることができただけで、そこにテーブル名を入れました。次のように使用します。CLASS :: where() - > get(); –

答えて

0

はこの1

DB::table('static_pages')->whereRaw("`slug` = (select slug from static_pages where id=2)")->get(); 

が、それはあなたを助けることを願ってみてください!

0

あなたはそれはあなたが何を参照してください場合は

1

を行うことができます関係生:

DB::table('static_pages')->where('slug', function ($query) { 
     return $query->from('static_pages')->where('id', '2')->select('slug'); 
    })->get(); 
2つのテーブル間のpは、あなたが同じスラッグ record with id = 2、あなたは、2つのDBを使用せずにそれを行うことができますの を持つすべてのレコードを取得したいがあれば、Laravelモデルの関係で見たいと思うかもしれません

あなたは、SQLクエリを検査したい場合は、それは予想する代わりに->get()

一つ邪悪なことは、あなたの内側のクエリは値のコレクションを返した場合、あなたの比較が疑問になるかもしれないですtoSql()を使用し、その後生成します。しかし、クエリを作成するために使用するフィールドは一意であるため、これは問題ではありません。

希望すると便利です。

+1

または次のように単純なもの: $ページ= DB :: table( 'static_pages') - >ここで( 'slug'、 '='、DB :: raw( '(静的ページからのslugの選択id ='。$ id ')))) - > get(); あなたのコードにそのまま生の広告 –

3

をjishadのおかげである。この

$pages = DB::table('static_pages')->where('slug','=',DB::table('static_pages')->where('id','=',$id)->pluck('slug'))->get(); 

にこの

$pages = DB::table('static_pages')->where('slug','=','(select slug from static_pages where id='.$id.')')->get(); 

から変更することによって、働いていたこの

$pages = DB::table('static_pages')->where('slug','=',DB::raw('(select slug from static_pages where id='.$id.')'))->get(); 
関連する問題