-1

For some reason this line of code returns ` "message": "Undefined variable $activeTargetValue", I'm wondering why? even though I did a check if activeTarget is_null but didn't work

$activeTarget = CustomerServiceTarget::with('target', 'target.target_type')->where("customer_service_id", auth()->user()->CustomerService->id)->ActiveTarget()->get();
    foreach ($activeTarget as $activeTargetValue)
        $target['amount'][] = $activeTargetValue->target->amount;
        $target['name'][] = $activeTargetValue->target->target_type->name; // here

        $contactedCustomersActual = CustomerProcedurePulled::contacted()->count() > 0 ? CustomerProcedurePulled::contacted()->count() : 0;
        $contactedCustomersTarget = 0;
        if (false !== $contactedCustomersKey = array_search(TargetType::TARGET_TYPE["ContactedCustomers"], $target['name']))
            $contactedCustomersTarget = $target['amount'][$contactedCustomersKey];

        $usedCouponsActual = CustomerProcedurePulled::usedCoupons()->count() > 0 ? CustomerProcedurePulled::usedCoupons()->count() : 0;
        $usedCouponsTarget = 0;
        if (false !== $usedCouponsKey = array_search(TargetType::TARGET_TYPE["UsedCoupons"], $target['name']))
            $usedCouponsTarget = $target['amount'][$usedCouponsKey];

    .. return statement  
Akash Kumar Verma
  • 3,185
  • 2
  • 16
  • 32
AlmoDev
  • 969
  • 2
  • 18
  • 46

2 Answers2

2

You should use brackets like this:

foreach ($activeTarget as $activeTargetValue) {
            $target['amount'][] = $activeTargetValue->target->amount;
            $target['name'][] = $activeTargetValue->target->target_type->name; // here

            $contactedCustomersActual = CustomerProcedurePulled::contacted()->count() > 0 ? CustomerProcedurePulled::contacted()->count() : 0;
            $contactedCustomersTarget = 0;
            if (false !== $contactedCustomersKey = array_search(TargetType::TARGET_TYPE["ContactedCustomers"], $target['name']))
                $contactedCustomersTarget = $target['amount'][$contactedCustomersKey];

            $usedCouponsActual = CustomerProcedurePulled::usedCoupons()->count() > 0 ? CustomerProcedurePulled::usedCoupons()->count() : 0;
            $usedCouponsTarget = 0;
            if (false !== $usedCouponsKey = array_search(TargetType::TARGET_TYPE["UsedCoupons"], $target['name']))
                $usedCouponsTarget = $target['amount'][$usedCouponsKey];
}

When you dont use brackets, it will be like this:

foreach ($activeTarget as $activeTargetValue) {
        $target['amount'][] = $activeTargetValue->target->amount;
}
        $target['name'][] = $activeTargetValue->target->target_type->name; // here

        $contactedCustomersActual = CustomerProcedurePulled::contacted()->count() > 0 ? CustomerProcedurePulled::contacted()->count() : 0;
        $contactedCustomersTarget = 0;
        if (false !== $contactedCustomersKey = array_search(TargetType::TARGET_TYPE["ContactedCustomers"], $target['name']))
            $contactedCustomersTarget = $target['amount'][$contactedCustomersKey];

        $usedCouponsActual = CustomerProcedurePulled::usedCoupons()->count() > 0 ? CustomerProcedurePulled::usedCoupons()->count() : 0;
        $usedCouponsTarget = 0;
        if (false !== $usedCouponsKey = array_search(TargetType::TARGET_TYPE["UsedCoupons"], $target['name']))
            $usedCouponsTarget = $target['amount'][$usedCouponsKey];
azibom
  • 1,769
  • 1
  • 7
  • 21
1

PHP blocks should be surrounded by curly Brackets ({}):

foreach ($activeTarget as $activeTargetValue) {
   :
}

If you don use brackets, the default behavior is that only the first line is inside your foreach block.

In general, it is a bad practice to use blocks in PHP without brackets.

guyaloni
  • 4,972
  • 5
  • 52
  • 92