Search code examples
phplaraveleloquent

Laravel validation for uniques value


I have multiple customers ,and each customers can have a list of names (customers_name) that can be "aka" or "previous" and for each type value must be unique. Message: "Call to a member function pluck() on array"

enter image description here

$customerPrevious = [];
if($customer_name['name_type'] == 'previous'){
    //  previous customer_names from server
    $customerPrevious = $customer->customerNames()->where('name_type', '=', 'previous')->pluck('name')->toArray();
    //  previous customer_names from request
    $customerPreviousRequest = $request->customer_names->where('name_type', '=', 'previous')->pluck('name')->toArray(); 
    $duplicateValue = array_diff($customerPrevious,$customerPreviousRequest);

    if($duplicateValue.length){
            return response($exception->getMessage(), 404);
    }

}

Solution

  • Your error is because inside $request->customer_names you get array.

    ->pluck() is for collections.

    So you can change:

    $request->customer_names->pluck('name')
    

    with

    Arr::pluck($request->customer_names, 'name')
    

    More about Arr::pluck() you can find here.