2017-09-18 20 views
0

私は特定のサブスクリプションを持つすべての人を取得したいが、別のタイプのサブスクリプションを持つ人は取得したくないという解析の問題がある。サブスクリプションは、サブスクリプション列のサブスクリプションテーブルのカンマ区切りリストに格納されます。ここに私がこれまで持っているコードはあります:複数のEloquent Where文が複数のパラメータを持つ

 $includeQuery = []; 
     foreach ($includeSegment as $include) { 
      $singleQuery = ['subscriptions','like', '%'.$include.'%', 'or']; 
      array_push($includeQuery, $singleQuery); 
     } 
     $excludeQuery = []; 
     foreach ($excludeSegment as $exclude) { 
      $singleQuery = ['subscriptions', 'not like', '%'.$exclude.'%', 'or']; 
      array_push($excludeQuery, $singleQuery); 
     } 

     $included = Subscription::where($excludeQuery)->where($includeQuery)->get(); 

私は結果を返しますが、それらの中には除外されたサブスクリプションがあります。

+0

where句内でのクエリ関数の使用は役に立ちますか? –

答えて

0

の配列です後もセグメントを反復処理する必要がいけません。したがって、特定のユーザーのすべてのサブスクリプションが存在する場合にのみ、レコードがスローされます。更新されたコードは次のとおりです。

 $includeQuery = []; 
     foreach ($includeSegment as $include) { 
      $singleQuery = ['subscriptions','like', '%'.$include.'%', 'or']; 
      array_push($includeQuery, $singleQuery); 
     } 
     $excludeQuery = []; 
     foreach ($excludeSegment as $exclude) { 
      $singleQuery = ['subscriptions', 'not like', '%'.$exclude.'%', 'and']; 
      array_push($excludeQuery, $singleQuery); 
     } 

//  $included = Subscription::where($excludeQuery)->where($includeQuery)->get(); 
     $included = DB::table('subscriptions') 
      ->join('app_users', 'app_users.customer_number', '=', 'subscriptions.customer_number') 
      ->join('app_datas', 'app_datas.customer_number', '=', 'subscriptions.customer_number') 
      ->where($includeQuery) 
      ->where($excludeQuery) 
      ->select('app_datas.device_token') 
      ->get(); 
+1

だから、解決しましたか?ニース! – Arty

0

使用することを特徴とする請求およびwhereNotIn代わり:

購読::ここで($ includeSegment) - > whereNotIn($ excludeSegment) - >()を取得。

、あなたは彼らが上記のコードの問題は、私が持っていた「または」の代わりに「と」ブール・パラメータにあった文字列

+1

私はちょうどあなたのカラムがカンマ区切りの値を持っていることを認識しましたので、これは明らかに動作しません – Markownikow

+0

あなたはwhereRaw()とmysql LOCATE関数、https://dev.mysql.com/doc/refman/5.7/en /string-functions.html#function_locate – Markownikow

関連する問題