Skip to main content

Mostly use of collection methods in laravel

Example code here.

<?php

namespace App\Http\Controllers;

use Illuminate\Http\Request;
use Illuminate\Support\Str;
class CollectionController extends Controller
{
    const PROJECT_TYPES = [
        'action',
        'base resource',
        'A W S',
        'lara beans'
    ];

    const MOVIES_TYPES = [
        ['id'=>1,'name'=>'action'],
        ['id'=>2,'name'=>'base resource'],
        ['id'=>3,'name'=>'A W S'],
        ['id'=>4,'name'=>'lara beans']
    ];
    function mapWithSlugs() {
        dump('Convert name of arrays into slug using Slug function and iterate array
with map function');
        $slugs = [];
        foreach(self::PROJECT_TYPES as $name){
            $slugs[] = Str::slug($name);
        }

        return $slugs;

        return collect(self::PROJECT_TYPES)->map(function ($name) {
            return 'ESE_'.Str::slug($name);
        })->toArray();
    }

    function mapWithKeys() {
        dump('Convert value of arrays into keys. And also make other index value
to someother key value using mapWithKeys method, Note: it will return us object');
        return collect(self::MOVIES_TYPES)
        ->mapWithKeys(function ($name) {
            return [$name['id'] => Str::slug($name['name'])];
        })->toArray();

        //output : {"1":"action","2":"base-resource","3":"a-w-s","4":"lara-beans"}
    }

    function eachMethod(){
        dump("This is seeder example where we can create 'users' than for each other
create 'listing' than assign/attach these listing with 'tags'.");
        $tags = Tag::factory(20)->create();

        User::factory(10)->create()->each(function ($user) use($tags) {
            Listing::factory(rand(1,4)->create([
                'user_id' => $user->id
            ]))->each(function ($listing) use($tags) {
                $listing->tags()->attach($tags->random(2));
            });
        });
    }

    function pushMethod(){
        $old_movies = self::MOVIES_TYPES;
        $new_movies = collect();

        collect($old_movies)->map(function($old_movies) use($new_movies) {
            $new_movies->push($old_movies['name']);
        });

        return $new_movies[2];
    }

    function filterMethod() {
        $collection = collect([
            ['name'=>'adnan','age'=>18],
            ['name'=>'zaib','age'=>20],
            ['name'=>'arsalan','age'=>12],
            ['name'=>'rao','age'=>11]
        ]);

        $filtered = $collection->filter(function ($name) {
            return substr($name['name'], 0,1) == 'A' || substr($name['name'], 0,1) == 'a' && $name['age'] >= 18;

        });
        // to json
        return $filtered->values()->all();
    }

    function pluckMethod() {
        $collection = collect([
            ['name'=>'adnan','age'=>18],
            ['name'=>'zaib','age'=>20],
            ['name'=>'arsalan','age'=>12],
            ['name'=>'rao','age'=>11]
        ]);

        $filtered = $collection->pluck('name');
        // to json
        return $filtered->values()->all();
    }

    function containMethod() {
        dump("contains method work similar to filter method but it return ");
        // with simple array
        // $collection = collect([
        //  'adnan',
        //  'zaib',
        //  'arsalan',
        //  'rao'
        // ]);
        // with nested associative array.
         $collection = collect([
            ['name'=>'adnan','age'=>18],
            ['name'=>'zaib','age'=>20],
            ['name'=>'arsalan','age'=>12],
            ['name'=>'rao','age'=>11]
        ]);

        $contains = $collection->contains(function ($item) {
            return substr($item['name'], 0,1) == 'b';
        });
        // to json
        return $contains ? 'array contains' : 'array does not contain';
    }

    function partitionMethod() {
        dump("This method much like with filter and contains. It uses closure
function containing the current item in the array.");
        dump("Using this we get two array of data. One array is the output of
our condition(login) and second array is the reverse the condition(login");

        $collection = collect([
            'adnan',
            'zaib',
            'arsalan',
            'rao'
        ]);

        [$aboveFive, $underFive] = $collection->partition(function($item) {
            return strlen($item) > 5;
        });

        // return $aboveFive;
        return $underFive->values()->all();

        // output : ["adnan","zaib","rao"]
    }

    function eachMethod2(){
        $collection = collect([
            ['banana',23,'lahore'],
            ['apple',56,'kashmir'],
            ['sugar cane',20,'pindi']
        ]);

        $collection->each(function($value) {
            dump("We have {$value[1]} {$value[0]} in our store {$value[2]}.");
        });

         dump("Note: problem is that it is dificult to determine which index
contain which value.to solve that issue we have eachSpread method.");

        $collection->eachSpread(function($product,$qty,$location) {
            dump("We have {$qty} {$product} in our store {$location}.");
        });
    }

} 


Some other useful method use to manipulate the data of the collection.

1. each method

$users = \App\User::get();
    // for each loop mostly use to modify data on each iteration
    // each method return us whole collection
    $output = $users->each(function($user){
        $user->isActive = rand(0,1);
        $user->year = date('Y');
        unset($user->updated_at);
    });
    dd($output);

2. filter method

filter method condtionally work, mean based on condition it return data.

$users = \App\User::get();
    $output = $users->filter(function($user){
        return $user->id < 5;
    });
    dd($output->toArray());

toArray() method will convert the eloquant modal data into array data.

3. search method

This method return the index number, position of fata inside the collection array.

$users = \App\User::get();
    // search method on array
    $list = $users->pluck('email');
    $output = $list->search('asdnanzaib486@gmail.com');
    dd($output);

Note: all() method convert data / return data in array. collection method aply on collections record.

Comments

Popular posts from this blog

Install MariaDB Latest Version 11.4 in Red Hat Version 9

 This this post i will show you step by step the installation process of mariaDB in red hat version 9. Step1 Run the command to pull the latest updated packages on applications installed in your system. -dnf update If you get Kernal update than reboot the system -reboot Step2 Go to official mariaDB site Make mariadb repository in /etc/yum.repos.d Place the configuration in this file # MariaDB 11.4 RedHatEnterpriseLinux repository list - created 2024-09-24 11:12 UTC # https://mariadb.org/download/ [mariadb] name = MariaDB # rpm.mariadb.org is a dynamic mirror if your preferred mirror goes offline. See https://mariadb.org/mirrorbits/ for details. # baseurl = https://rpm.mariadb.org/11.4/rhel/$releasever/$basearch baseurl = https://mirrors.aliyun.com/mariadb/yum/11.4/rhel/$releasever/$basearch # gpgkey = https://rpm.mariadb.org/RPM-GPG-KEY-MariaDB gpgkey = https://mirrors.aliyun.com/mariadb/yum/RPM-GPG-KEY-MariaDB gpgcheck = 1 Now install the mariaDB with its dependencies package...

Redis installation in Red Hat Linux

 In this post we will see step by step installation of Redis service in Redhat/CentOS operation system. To install Redis, run this command in terminal -dnf install redis This command will install the redis service in your machine. Verify installation -systemctl status redis -systemctl start redis -systemctl enable redis Note: Before start redis service set Linux Kernal overcommit memory to 1 by adding vm.overcommit_memory = 1 to /etc/sysctl.conf file. Why we should do that: As we know redis is in memory data store. It primarily uses RAM to store data. Redis and other processes use RAM memory. We set vm.overcommit_memory = 1 to make sure Kernal not overcommit the memory by allocating memory to new program which required more memory than available memory. In this scenario OOM (Out Of Memory) killer terminate the rest of processes. We also restricting Kernal not to terminate the important services running and also stop swapping redis and other importance service to device i/o device,...

Prepared statements, form submission, form validation and displaying errors in php

PHP Code. Insert statement Query. INSERT INTO `users`(`user_id`, `user_first`, `user_last`, `user_email`, `user_uid`, `user_pwd`) VALUES (1,'Adnan','Zaib','text@.com','Admin',1234) What are Prepared statements and how to use them //Created a sql prepare template $sql = "SELECT * FROM users WHERE user_uid=?;"; //than send to database with certain values left(unspecified parameters). //Create a prepared statement $stmt = mysqli_stmt_init($conn);   //prepare the prepared statement if(!mysqli_stmt_prepare($stmt, $sql)){ echo "sql statement failed"; }else{ //bind values to parameters and further to placeholder mysqli_stmt_bind_param(#stmt, "s",); // ‘s’ stands for datatype of parameter that you are going to pass. }   while($row = mysqli_fetch_assoc($result)){ echo $row['user_uid'] . "<br>"; } PHP form Validation   <?php // define variables and set to empty values $name = $email = $gender = $comment = ...