2017-11-25 8 views
0

私はemployeesitemsの関係を持っています。関係が従業員に多数のアイテムを持たせることができるone to many複数のIDに基づくアイテムの取得 - Laravel

たとえば、マークとビルの2人の従業員がいます。

商品アイテムをitem_no 1-0234,1-0235でそれぞれマークします。

それぞれ、item_no 1-0236,1-0237で商品を購入しました。

アイテム番号は一意であり、したがって、所有している顧客を見つけるために使用できます。

これは、お客様の商品が属する商品を見つけるためのコードです。チェックボックスを使用してすべてのアイテムのIDを選択します。

私が達成しようとしているのは、選択したアイテムに基づいてすべての従業員を探し、explodeを使用して電話番号とitem_nosを取得し、それらにメッセージを処理したいと考えています。

コントローラ

public function processMessage(Request $request) 
    { 
     $ids = $request->ids; // i am able to get the item_nos selected 
     e.g 1-0234, 1-0236 

     $split = explode(",",$ids); 

     if(request()->ajax()) { 

     $employees = Employee::whereHas('items', function($emp)use($split) 
     { 
      $emp->where('id',$split); 

     })->get(); 


     $get_name = []; 
     $get_phone = []; 

     foreach($emps as $key => $emps) 
     { 
      $get_name[] = $emps->name; 
      $get_phone [] = $emps->phone; 
     }  

    } 

    return ['success' => $get_phone]; 

} 

PS:コードでは、iは1から0234 item_nos、1から0236を有する2つのアイテムを選択していると想像。つまり、私のコードはMarkとBillの2つの電話番号を返すべきですが、Markのものの1つだけを返します。ですが、なぜでしょう

+0

変更機能 - クエリ内で役立つはずです以下の '$ emp-> WHERE'に' $ emp-> whereHas( 'ID'、$分割) ' – Ali

+0

@Ali私は今このエラーを受け取ります型エラー:イルミネーションに引数2が渡されます\\データベース\\ Eloquent \\ Builder :: whereHas()はClosureのインスタンスでなければなりません。配列は' – Switz

+0

です。 'whereIn' – Ali

答えて

1

私が修正した場合は、

$emp->whereIn('id',$split); 
関連する問題