Laravel’de Sorgu Oluşturma ve Eloquent İlişkileri

Laravel, PHP’nin popüler bir framework’üdür ve Eloquent ORM sayesinde veritabanı işlemlerini kolayca gerçekleştirebilirsiniz. Bu yazıda, Laravel’de sorgu oluşturma ve Eloquent ilişkilerini nasıl kullanacağımızı ele alacağız. 💡
Sorgu Oluşturma
Laravel, veritabanı işlemlerini kolaylaştırmak için Query Builder ve Eloquent ORM’i içerir. Bunlardan ilki olan Query Builder, SQL sorgularını PHP dilinde oluşturmayı sağlar. Bunun için öncelikle DB
façade’sini kullanarak bir sorgu örneği oluşturmanız gerekmektedir.
$users = DB::table('users')->get();
Bu örnekte, users
tablosundaki tüm kullanıcıları çektik. get()
metodu ile tüm verileri çekebiliriz.
Belirli bir sütundaki değere göre sorgulama yapmak için where()
metodu kullanılır.
$user = DB::table('users')->where('name', 'John')->first();
Bu örnekte, ismi ‘John’ olan ilk kullanıcıyı çektik. Birden fazla koşul eklemek isterseniz, where()
metodunu zincirleme yaparak kullanabilirsiniz.
$user = DB::table('users')
->where('name', 'John')
->where('votes', '>', 100)
->first();
orWhere()
metodunu kullanarak ‘veya’ koşullu sorgular da yapabiliriz.
$user = DB::table('users')
->where('votes', '>', 100)
->orWhere('name', 'John')
->get();
Eloquent ORM ve İlişkiler
Eloquent ORM, Laravel’deki en güçlü özelliklerden biridir. Aktif bir kayıt (Active Record) tasarım desenine sahip olan Eloquent, veritabanı tablolarınızı PHP nesneleri olarak temsil eder.
Her bir veritabanı tablosuna karşılık gelen bir Eloquent modeli oluşturmanız gerekir. Bu model üzerinden ilgili tablo ile işlemler yapılır.
namespace App\Models;
use Illuminate\Database\Eloquent\Model;
class User extends Model
{
//
}
Bu örnekte, ‘users’ tablosunu temsil eden bir User modeli oluşturduk.
Eloquent, bir modelin diğer model ile ilişkisini belirtmek için çeşitli yöntemler sunar: hasOne()
, hasMany()
, belongsTo()
, belongsToMany()
ve diğerleri.
Örneğin, bir kullanıcının birçok siparişi olabilir ve bir siparişin bir kullanıcıya ait olması gerekebilir. Bu ilişkiyi aşağıdaki gibi belirtiriz.
namespace App\Models;
use Illuminate\Database\Eloquent\Model;
class User extends Model
{
public function orders()
{
return $this->hasMany('App\Models\Order');
}
}
namespace App\Models;
use Illuminate\Database\Eloquent\Model;
class Order extends Model
{
public function user()
{
return $this->belongsTo('App\Models\User');
}
}
Bu şekilde, ilişkili verilere ulaşabilmek için metotları kullanabiliriz.
$user = App\Models\User::find(1);
foreach ($user->orders as $order) {
echo $order->amount;
}
Yukarıdaki örnekte, belirli bir kullanıcının siparişlerine ulaştık.
Sonuç olarak, Laravel ve Eloquent ORM’nin gücüyle karmaşık SQL sorgularını bile kolayca oluşturabilir ve yönetebilirsiniz. Bu özellikler, web uygulamanızın veritabanı işlemlerini hızlandıracak ve kodunuzun okunabilirliğini artıracaktır. 🚀