En Çok Kullanılan Laravel Mysql Terminal Komutları, Veritabanı işlemleri (Tinker)

Mysqle root ile bağlantı kurmak

mysql -u root

UTF8 formatında Veritabanı oluşturmak:

 CREATE DATABASE laravel_api CHARACTER SET utf8 COLLATE utf8_general_ci;

İşlem yapmak üzere İlgili veritabanını seçmek

USE DATABASEADI

Migrate dosyalarını çalıştırmak için

php artisan migrate

Yeni Migrate oluşturmak için

 php artisan make:migration create_products_table --create=products

Çalıştırılan Son Migrate işlemini geri almak için

php artisan migrate:ROLLBACK

Çalıştırılan TÜM Migrate işlemini geri almak için

php artisan migrate:reset

Hem reset Hem de migrate işlemini tek seferde yapmak için

php artisan migrate:refresh

Bütün tabloları silmek için

php artisan migrate:fresh

Migrate işleminde ilgili alanı Boş kalabilir yapmak için

$table->text('ornekalan')->NULLABLE();

Laravelde DB sınıfına ait hazır metodları kullanmak için

php artisan tinker

Tinker terminalden kayıt eklemek için

DB::INSERT('insert into tabloadi (sutun1, sutun2, sutun3) values (?, ?, ?), ['aciklama 1 ', 'aciklama 2', 'aciklama 3'] ');

Tinker terminalden kayıtları listelemek için

 DB::SELECT('select * from products');

Tablodaki verileri listelemenin diğer yolu:

DB::TABLE('urunler')->GET();

Tablodaki tek bir kaydı çekmek için

>>> DB::TABLE('urunler')->WHERE('kolonadi','icerik1')->GET()

Tablodaki verilerden tek bir şarta göre veri çekmek için
Örn: fiyatı 10 üzerinde olanları listelemek:

DB::TABLE('urunler')->WHERE('fiyat','>', 10)->GET()

Tablodaki verilerden tek bir şarta göre tek veri çekmek için
Örn: fiyatı 10 üzerinde olanlardan ilkini almak için

DB::TABLE('urunler')->WHERE('fiyat','>', 10)->FIRST()

Doğrudan ID’ye ait değere göre veri çekmek için:

DB::TABLE('urunler')->find(1);

Dizi halinde veri eklemek:

DB::TABLE('urunler')->INSERT(['name'=>'Product 10', 'slug'=> 'product-10', 'price'=>100])

Tablodaki kayıt sayısını bulmak

 DB::TABLE('urunler')->COUNT()

Her tabloya karşılık gelecek model oluşturmak:

php artisan make:model modelAdi

modelAdi İsimli Modeldeki Verileri Listelemek

 \App\Models\modelAdi::GET()

Laravel 8’de tinker kullanarak nesne oluşturmak:

$product = NEW \App\Models\Product;

Laravel 8 Tinker nesne içindeki verilerin veritabanına kaydedilmesi

 $product->save()

Tablodaki bütün kolonlara veri ekleme yapılabilmesine olacak sağlayan kod model içinde kullanımı

protected $guarded = [];

Tabloda seçili bir alanı güncellemek;

 App\Models\Urun::find(2)->UPDATE(['price' =>45.50]);

factory ile fake veriler oluşturmak

User::factory()->make();

Kullanım örneği:

use App\Models\User;

public function test_models_can_be_instantiated()
{
    $user = User::factory()->make();

    // Use model in tests...
}

Çoklu kullanım örneğin 3 adet kullanıcı oluşturmak için


User::factory()->count(3)->make();

Veritabanına eklemek için


User::factory()->count(3)->create();

Tabloyu boşlatmak için

DB::table('users')->truncate();

Factory Template Dosyası oluşturmak için

php artisan make:factory OrnekFactory

OrnekFactory içindeki ayarlamaları yaptıktan sonra tinker çalıştırmadan önce

composer dump-autoload

komutunu çalıştırmakta fadya var aksi halde hata alabilirsiniz.

seeders çalıştırmak

seed yapısı için run fonksiyonu içine
– 10 kullanıcı oluşturmak için
– bunu yapabilmek için daha önce UserFactory.php dosyasının olması ve gerekli düzenlemenin yapılmış olması gerekiyor.

 User::factory()->count(10)->create();

Terminalden bu komutu çalıştırmak için

php artisan db:seed

DatabaseSeeder.php içinden işlemler;

– Tabloyu boşaltmak için

DB::statement("Truncate table users");

Özel Seeder Yapısı oluşturmak:

 php artisan make:seeder OrnekTableSeeder

Harici seeder dosyalarını çağırmak:

Yukarıdaki gibi oluşturulan OrnekTableSeeder dosyasını DatabaseTableSeeder.php içine aşağıdaki gibi çağırarak kullanabiliriz:

 $this->call(OrnekTableSeeder::class);

Tabloların içini tamamen silmek:

php artisan migrate:fresh

Tüm tabloları silmek ve ardından seed işlemiyle otomatik doldurmak için

php artisan migrate:fresh --seed

Controller’dan uyeler.blade.php’ye veri göndermek için

$uyeler = Uyeler::find(3);
return view('uyeler', array('uyeler'=>$uyeler));

Şarta göre veri listelemek

$uyeler = Uyeler::where('id',4)->first();
return view('uyeler', array('uyeler'=>$uyeler));

WhereRaw fonksiyonu ile şarta göre veri listelemek

$uyeler = Uyeler::whereRaw('id=?', array(1))->first();
return view('uyeler', array('uyeler'=>$uyeler));

Birden fazla satır veri listelemek

$uyeler = Uyeler::all();

satır sayısını bulmak

$uyeSayisi = Uyeler::where('id', '>', 0)->count();

Yukarıda değişkene aktarılanları uyeler blade sayfasına postalamak için

return view('uyeler', array('uyeler'=>$uyeler, 'uyeSayisi' =>$uyeSayisi));

Route yapısı içinde factory kullanımı

Route::get('/users', function (){

    return User::factory()->count(10)->make();

});

Controller oluştururken Otomatik model ve metodları oluşturmak

php artisan make:controller ProductController --resource --model=Product

Route Tanımlarını Listelemek

 php artisan route:list

Api Klasörü içinde model tanımlı oluşturmak

php artisan make:controller Api\ProductController --api --model=
product

apiResources Toplu Tanımlama Örneği:

Route::apiResources([
    'products' => 'App\Http\Controllers\Api\ProductController',
    'users' => 'App\Http\Controllers\Api\UserController'

]);

Product isimli modeldeki dataların hepsini listelemek

  return Product::all();
 

Product isimli modeldeki dataların hepsini listelemek 2. yol

  return response()->json(Product::all(), 200);
 

ID’ye dayalı veri kontrolü yapmak (girilen id değerine karşılık veritabanında veri yoksa hata mesajı vermek)

    public function show($id)
    {
        $product = Product::find($id);
 
        if ($product)
            return response($product, 200);
        else
            return response(['message' => 'Product not found'], 404);
 
       // return $product;
 
    }

Laravel 8 PUT / update işlemi için aşağıdaki yöntemler kullanılabilir

    public function update(Request $request, product $product)
    {
        //

          $input = $request->all();
          $product->update($input);

        return response([
            'data' => $product,
            'message' => 'Product updated.'
             ], 200);

    }

yada

    public function update(Request $request, product $product)
    {
        //


        $product->name = $request->name;
        $product->slug = Str::slug($request->name);
        $product->price = $request->price;
        $product->save();

        return response([
            'data' => $product,
            'message' => 'Product updated.'
             ], 200);

    }

Laravel 8 DELETE / silme işlemi için aşağıdaki yöntemi kullanabilirsiniz.

public function destroy(product $product)
{
//

$product->delete();

return response([

‘message’ => ‘Product deleted’
], 200);

}

Laravel 8 Paginate sayfalama kullanımı

– her sayfada 5 adet gösterim için

  return response(Product::paginate(5),200);

Laravel 8 Paginate Offset ve limit kullanımı:
– varsayılan değerleri girerek sayfalama

        $offset = $request->offset ? $request->offset: 0;
        $limit = $request->limit ? $request->limit: 10;

        return response(Product::offset($offset)->limit($limit)->get(),200);

Get kullanımı örnek:
– 11’den itibaren 5 kayıt ekrana gelecektir

http://127.0.0.1:8000/api/products?offset=10&limit=5

Call to undefined function factory() in Psy Shell code ÇÖZÜMÜ

Laravel 8 sonrası factory kullanımıyla alakalı gelebilecek hatalardan birisi;

PHP Fatal error: Call to undefined function factory() in Psy Shell code on line 1

bu hatanın oluşmasına sebep olan komut satırı

factory(App\Models\User::class)->make();

ÇÖZÜM:
Laravel 8’de güncel olarak YUKARIDAKİ kod yerine aşağıdakini kullanarak sorunu çözebilirsiniz.

User::factory()->make();

Kullanım örneği:

use App\Models\User;

public function test_models_can_be_instantiated()
{
    $user = User::factory()->make();

    // Use model in tests...
}

Çoklu kullanım örneğin 3 adet oluşturmak için


User::factory()->count(3)->make();

Veritabanına eklemek için


User::factory()->count(3)->create();

Tinker Terminal üzerinden model kullanarak veri ekleme işlemi

Modele dizi halinde veri ekleme işlemi için

\App\Models\Product::create(['name'=>'Product 6', 'slug'=>'product-6', 'price'=>88 ])

kullanabilirsiniz.

Şöyle bir hata alıyorsanız;

Illuminate\Database\Eloquent\MassAssignmentException with message 'Add [name] to fillable property to allow mass assignment on [App\Models\Product].'

Product isimli model dosyasına eklenmesi gereken kod blogu;

 protected $fillable = ['name', 'slug', 'price'];

** 3 adet veri ekleme denemesi yaptığımız sütunların isimlerini örnekteki gibi yapmamız gerekiyor.

Eğer Tinker kullanarak ekleme işlemi yapmaya çalışıyorsanız hatanın düzelmesi için tinkerı kapatıp tekrar başlatmanız gerekecektir.

Laravel 8 Target class [xxxController] does not exist. HATA ÇÖZÜMÜ

hata kodu:

  * @throws \Illuminate\Contracts\Container\BindingResolutionException
 
     * @throws \Illuminate\Contracts\Container\CircularDependencyException
 
     */
 
    public function build($concrete)
 
    {
 
        // If the concrete type is actually a Closure, we will just execute it and
 
        // hand back the results of the functions, which allows functions to be
 
        // used as resolvers for more fine-tuned resolution of these objects.
 
        if ($concrete instanceof Closure) {
 
            return $concrete($this, $this->getLastParameterOverride());
 
        }
 
 
 
        try {
 
            $reflector = new ReflectionClass($concrete);
 
        } catch (ReflectionException $e) {
 
            throw new BindingResolutionException("Target class [$concrete] does not exist.", 0, $e);
 
        }
 
 
 
        // If the type is not instantiable, the developer is attempting to resolve
 
        // an abstract type such as an Interface or Abstract Class and there is
 
        // no binding registered for the abstractions so we need to bail out.
 
        if (! $reflector->isInstantiable()) {
 
            return $this->notInstantiable($concrete);
 
        }
 
 
 
        // if (in_array($concrete, $this->buildStack)) {
 
        //     throw new CircularDependencyException("Circular dependency detected while resolving [{$concrete}].");
 
        // }
 
 
 
        $this->buildStack[] = $concrete;

web.php’de hata almama sebep olan route yapısı:

Route::get('/xxx/{id}/', 'xxxController@show');

Hatanın düzelmesi için eklenmesi gereken kod: App\Http\Controllers\

Düzeltmeden sonrası:

Route::get('/xxx/{id}/', 'App\Http\Controllers\xxxController@show');

Adobe, Camtasia, Movavi Video Editör Videolarda Siyah Ekran Hata Çözümü

İphone telefonda çektiğim ve düzenlemeye çalıştığım videolarda ses var görüntü yoktu. Çoğu kaynaklarda program ayarlarından olayı çözdüklerini gördüm fakat bu benim için çözüm olmadı, dosya uzantım MOV olduğu için convert etmeyi denediysem de bu da çözüm olmadı. Microsoft Marketten “HEVC Video Uzantıları” uygulamasını yükleyerek sorunu çözmüş bulunmaktayım. Buraya ekran görüntüsünü bırakıyorum.

HEVC Video Uzantıları programını başka kaynaklardan indirmeyi sakın denemeyin genellikle virüslü oluyor HEVC Video Uzantıları download linkleri güvenilir değil bilginiz olsun.

PHP Basit Dosya Yükleme & Resim yükleme sınıfı kullanarak güvenli dosya yükleme

Dosya upload etmenin mantığını önce basit kod yapımızda görelim bunun için index.php, islem.php ve img klasörüne ihtiyacımız olacak.

index.php içeriği:

<!DOCTYPE html>
<html lang="en">
<head>
	<meta charset="UTF-8">
	<meta name="viewport" content="width=device-width, initial-scale=1.0">
	<title>PHP Dosya Yükleme</title>
</head>
<body>
 
<form action="islem.php" method="POST" enctype="multipart/form-data">
	<input type="file" name="foto">
	<button type="submit">Yükle</button>
 
</form>
 
</body>
</html>

islem.php içeriği Okumaya devam et PHP Basit Dosya Yükleme & Resim yükleme sınıfı kullanarak güvenli dosya yükleme