2017-01-04 6 views
0

私は変数がmysqlフィールドのカンマ区切り文字列の中にquerybuilderを使って存在するかどうかを確認する必要があります。コンマ区切りの値フィールドを探すLaravel 5.1

私はこの

<?php 
     $parents = DB::table('categorie')>whereRaw('FIND_IN_SET("$categoria->id", parent)')->get();        

を行うが、任意の値を返しませんでした。

+0

検索クエリは機能していますか? –

+2

カンマで区切られた文字列をデータベースに持つことは、ほとんどの場合、常に悪い考えです。将来的にはこれらの問題にぶつからないように、データベースアーキテクチャの再設計を検討してください。 – Daniel

答えて

4

自分でクエリに変数を入れないでください。代わりにバインディングを使用すると、パラメータが正しくエスケープされます。

<?php 
    $parents = DB::table('categorie')->whereRaw('FIND_IN_SET(?, parent)', [$categoria->id])->get(); 
0

あなたは$ categoria-> idがクエリ内か置かれている場合、これはそれをクリアします

DB::table('categorie')->whereRaw('FIND_IN_SET("$categoria->id", parent)')->toSql(); 

なっクエリ後toSql()メソッドを使用して、クエリをデバッグすることがあります。

私はまだコメントできませんので、回答として投稿してください。

+0

クエリは$ parents = DB :: table( 'categorie') - > whereRaw( "FIND_IN_SET( '"。$ categoria-> id。 "、parent)") - > get(); –

+0

これは、SQLが実行されるクエリではありません。 toSql()メソッドを使用すると、SQLで実行されるのとまったく同じクエリが得られます。指定されたクエリはクエリビルダのインスタンスであり、実行前にSQLクエリに変換されます。 –

関連する問題