0

私はdb呼び出しを行い、注文のためにすべてのサービスを取得しています。注文に関連する特定のサービスがある場合は、変数を設定する必要があります。これは私が現在行っている方法であり、変数を設定すると次のアイテムが出てきてそれを押しつぶすため、機能しません。その前のサービスアイテムから正しい値を上書きします。

$services = OrderService::where('order_id','=',$payload['orderId'])->get(['service_id']);
foreach($services as $service){
    //Screen
    if($service->service_id == 4){ $responseArray['lnpScreen'] = '1';}
    else{ $responseArray['lnpScreen'] = '0'; }
    //Screen 2
    if($service->service_id == 5){ $responseArray['tfpScreen'] = '1';}
    else{ $responseArray['tfpScreen'] = '0'; }
    //Screen 3
    if($service->service_id == 6){ $responseArray['didScreen'] = '1';}
    else{ $responseArray['didScreen'] = '0'; }
}
4

2 に答える 2

3

ここで動作するはずです:

$responseArray['lnpScreen'] = '0';
$responseArray['tfpScreen'] = '0';
$responseArray['didScreen'] = '0';
foreach($services as $service){
    //Screen
    if($service->service_id == 4){ $responseArray['lnpScreen'] = '1';}
    //Screen 2
    if($service->service_id == 5){ $responseArray['tfpScreen'] = '1';}
    //Screen 3
    if($service->service_id == 6){ $responseArray['didScreen'] = '1';}
}

これで、お互いに上書きしなくなりました。

または powtac が述べたように:

$responseArray['lnpScreen'] = '0';
$responseArray['tfpScreen'] = '0';
$responseArray['didScreen'] = '0';
foreach($services as $service){
    switch($service->service_id){
        case 4://Screen
          $responseArray['lnpScreen'] = '1';
          break;
        case 5://Screen 2
          $responseArray['tfpScreen'] = '1';
          break;
        case 6://Screen 3
          $responseArray['didScreen'] = '1';
          break;
    }
}
于 2013-03-21T20:53:14.433 に答える
0

$responseArrayループするたびに同じものを使用するため、上書きしています。各サービスを追跡するには、多次元配列を使用する必要があります。そのような何かがあなたを始めるかもしれません:

$services = OrderService::where('order_id','=',$payload['orderId'])->get(['service_id']);
$count = 0;
foreach($services as $service){
    //Screen
    if($service->service_id == 4){ $responseArray[$count]['lnpScreen'] = '1';}
    else{ $responseArray[$count]['lnpScreen'] = '0'; }
    //Screen 2
    if($service->service_id == 5){ $responseArray[$count]['tfpScreen'] = '1';}
    else{ $responseArray[$count]['tfpScreen'] = '0'; }
    //Screen 3
    if($service->service_id == 6){ $responseArray[$count]['didScreen'] = '1';}
    else{ $responseArray[$count]['didScreen'] = '0'; }
    $count++;
}
于 2013-03-21T20:52:21.090 に答える