Laravel Türkiye Discord Kanalı Forumda kod paylaşılırken dikkat edilmesi gerekenler!Birlikte proje geliştirmek ister misiniz?

Merhabalar, mevcut veritabanımızdan seed oluştrabilmek için Allah'ın izni ile bir class yazdım. Model kullanılarak çalışıyor. Muhakkak bug'ları, eksikleri veya hataları vardır.

<?php
namespace App\MyClasses;

class MySeedMaker {
    private $columns;

    public function except($_columns){
        $_if_state = null;
        foreach($_columns as $_column){
            $_if_state .= '$_key === "'.$_column.'" || ';
        }
        $this->columns = mb_substr($_if_state,0,-4);
        return $this;
    }

    public function make($_model,$_soft_deletes){
        if($_soft_deletes==true){
            //deleted_at sütunu varsa.
            $_result = $_model::withTrashed()->get();
        }else{
            //deleted_at sütunu yoksa.
            $_result = $_model::all();
        }
        $_row=null;
        foreach ($_result as $_data){
            $_row .= "<li>[";
            foreach($_data->toArray() as $_key=>$_item){
                // ' " işaretleri seed kısmını bozmasın diye addslashes ekledik.
                $_modify_item = htmlentities(addslashes($_item));
                //string ifadenin php kodu olarak çalışması için eval kullandık.
                if(eval("return $this->columns;")){
                    // timestamp sütunlarında gelen veride format sıkıntısı halen var.
                     continue;
                }else{
                    $_row .= "'$_key'=>'$_modify_item',";
                }
            }
            // ',]' her rowdaki , kısmını silmek için kullandık.
            $_row = mb_substr($_row,0,-1);
            $_row .= "],</li>";
        }
        echo $_row;
    }
}

Örnek Kullanım Şekilleri

$_new_seed_maker = new MySeedMaker();
$_new_seed_maker->except(['id','created_at','updated_at','deleted_at'])->make('\App\Category',true);

Saygılar

Edit 2: except kullanarak dilediğiniz sütunu çıkarabilirsiniz.

Edit 3 : $_modify_item = htmlentities(addslashes($_item)); şeklinde düzeltilmiştir.

Ellerinize sağlık.

Değişken isimlerinde snake_case yerine camelCase kullanmanızı tavsiye ederim.