2017-12-07 6 views
-1
以下の私のコードで

フェッチ単一クライアント・データ - Laravel

  1. 私は(チェックボックスをオンにして)選択した製品のidsを要求。

  2. ここで、私は製品が属するクライアントを見つける。それから私はクライアントの名前と電話番号を取得します。

  3. ここで、query stringは、これらのクライアントにメッセージを送信するAPIです。

メッセージを送信すると、それぞれのクライアントの製品番号を分けることができません。

お客様各位のように、番号#の343fr3とあなたの製品が出荷されたマークとビルは、クライアントがある場合たとえば、メッセージがされなければならない - Mark`

お客様各位、ご使用番号22543の商品が出荷されました -

しかし、私の場合、1つのクライアント(MarkまたはBill)がメッセージの別の製品番号を取得します。

何が間違っているのですか、それともapiがどのように構成されているのでしょうか?

public function sendAll(Request $request) 
{ 
    $ids  = $request->ids; 
    $split = explode(",",$ids); 
    $shipment = Shipment::findOrFail($split); 

    if(request()->ajax()) { 
     $clients = Client::whereHas('products', function($find_clients)use($split) 
     { 
      $find_clients->whereIn('id',$split); 
     })->get(); 

     foreach($shipment as $check_shipment) 
     { 
      if($check_shipment->status == 0) 
      { 
       //do something 
      } 
      else 
      { 
       $get_client_name = []; 
       $get_client_phone = []; 

       foreach($clients as $key => $client) 
       { 
        $get_client_name[] = $client->name; 
        $get_client_phone[] = $client->phone; 
       } 

       $query = "?key=something&to=".implode(',',$get_client_phone)."&msg=Dear Customer, your products with number ".$check_shipment->id." has been shipped.";   
      } 
     }   
    } 
} 
+0

あなたの質問は私には不明だと思われます – kunal

+0

@kunalどうか分かりませんか? – pogba

+0

「出荷」と「クライアント」の関係は何ですか –

答えて

0

私は詳細表示を隠すこの道を行くだろう:

public function sendAll(Request $request) 
{ 
$ids = $request->ids; 
$split = explode(",",$ids); 
$shipment = Shipment::where('status', '>', 0)->whereIn('id', $split); 

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

    foreach($shipment->get() as $check_shipment) 
    { 

      $query = "?key=something&to=".implode(',',$check_shipment->client->phone)."&msg=Dear Customer, your products with number ".$check_shipment->id." has been shipped.";   

    }   
    } 
} 

私は出荷は問題はあなたがをループしようとしているデータが関係を持っていないということであるクライアント

+0

この場合、4つ以上のクライアントを選択すると、クエリは4つのクライアントすべてにメッセージを送信しますか? – pogba

+0

この 'implode( '、'、$ check_shipment-> client-> phone)'を試してみましたか?これはエラーを返します。 'implode()'は配列を必要とし、 '$ check_shipment-> client-> phone'は配列を返しません。 –

+0

これはコレクションで、簡単に修正します' collect($ check_shipment-> client-> phone) - > toArray ) '代わりに – DorienCragen

0

に属していると仮定それらの間の。あなたができることは、

public function sendAll(Request $request) 
{ 
    $ids  = $request->ids; 
    $split = explode(",",$ids); 
    $shipment = Shipment::with('client')->findOrFail($split); 

    foreach($shipment as $check_shipment) 
    { 
     if($check_shipment->status == 0) 
    { 
     //do something 
    } 
    else 
    { 
     $get_client_name []= $check_shipment->client->name; 
     $get_client_phone [] = $check_shipment->client->phone_no;       
    } 
    } 

$query = "?key=something&to=".implode(',',$get_client_phone)."&msg=Dear Customer, your products with number ".$check_shipment->id." has been shipped."; 

} 

希望です。

関連する問題