2016-10-25 7 views
1

私はLaravel 5.2を使用しています。クエリの指定された条件と一致する場合、特定の列をフィルタリングする方法は?フィルタの列が一致する場合はレコードを取得します

は、例えば私は

カラムなどレコードを持っている[ID] => '1'、カラム[ユーザ名] => 'id_45820'、カラム[コンテンツ] => 'テスト'、カラム[ ] => '管理者、id_45820、ユーザに、カラム【のcreated_at] => ''、 カラム[updated_atの] => ''

及びIが基準

$role = 'user'; 
$username = 'id_45820'; 
として2つの変数を有します

N私は '$ role'と '$ username'変数を使用して 'to'カラムをフィルタリングしたいと思います。 '$ role'または '$ username'またはその両方が 'to'カラムの内容と一致する場合コンマで区切って)、そのレコードをプルすることは可能ですか?

$q = notifications::where(function($query){ 
    //I just don't know how to do it. Help please? 
})->get(); 
+0

「admin、id_45820、user」はコンマで区切られてどのように格納されていますか? –

+0

どういう意味ですか?私はそれを得ていない。それは簡単に保存することができます。なぜなら、カラム 'to'は新しいレコードを保存するときのコントローラの変数なので、文字列を格納して、ロールとユーザ名をコンマで区切って保存するだけです。 –

+0

@RossWilsonの答えは正しいですが、 'LIKE'は非常に高価な操作なので、DBの再設計について考えるべきだと思います。 – aleksejjj

答えて

1

私が正しく、あなたの質問を理解していた場合:

$role = 'user'; 
$username = 'id_45820'; 

$q = notifications::where(function($query) use($role, $username) { 
    $query->where('to', 'like', "%{$role}%") 
      ->orWhere('to', 'like', "%{$username}%"); 
})->get(); 

あなたはどちらか、または両方が、その後、あなただけのいずれかが存在するかどうかを確認する必要が存在するかどうかを確認したい言ったように。

希望すると便利です。

+0

なぜ '%{$ role}%'は '%{$ username%}'と異なるのですか '%{$ username%}'では、右側の '%'は '}'の前にありますか? –

+0

@CodeDemon ... typo。また、上記では、 '' ''ではなく '' ''を使用してください。 –

+0

パーセントと中括弧の意味はどうですか? –

1
$q=notifications::where('to', 'like', '%' . $role . '%') 
       ->orWhere('to', 'like', '%' . $user . '%') 
       ->get(); 
関連する問題