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