私はemployees
とitems
の関係を持っています。関係が従業員に多数のアイテムを持たせることができる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つだけを返します。ですが、なぜでしょう
変更機能 - クエリ内で役立つはずです以下の '$ emp-> WHERE'に' $ emp-> whereHas( 'ID'、$分割) ' – Ali
@Ali私は今このエラーを受け取ります型エラー:イルミネーションに引数2が渡されます\\データベース\\ Eloquent \\ Builder :: whereHas()はClosureのインスタンスでなければなりません。配列は' – Switz
です。 'whereIn' – Ali