定制 mavisland/orm 二次开发

按需修改功能、优化性能、对接业务系统,提供一站式技术支持

邮箱:yvsm@zunyunkeji.com | QQ:316430983 | 微信:yvsm316

mavisland/orm

最新稳定版本:v1.0.0

Composer 安装命令:

composer require mavisland/orm

包简介

A lightweight nearly-zero-configuration object-relational mapper and fluent query builder for PHP.

README 文档

README

Bu sınıf, saf PHP ile yazılmış, framework bağımsız, sade ama güçlü bir ORM yapısıdır. PDO kullanır, Singleton deseniyle bağlantıyı tek seferde kurar ve Laravel benzeri kullanım kolaylığı sunar.

🚀 Özellikler

✅ PDO ile güvenli bağlantı ✅ Singleton bağlantı (tek sefer açılır) ✅ define() ile kolay yapılandırma ✅ Kolon seçimi, where(), join(), groupBy() gibi SQL kolaylıkları ✅ save(), delete(), softDelete() ve restore() gibi model işlemleri ✅ fillable, guarded ile güvenli veri setleme ✅ validate() ile model bazlı doğrulama ✅ hasMany, belongsTo, with() ile ilişkiler ✅ toArray(), toJson() dönüşümleri ✅ Sayfalama (paginate())

⚙️ Kurulum

1. Veritabanı Yapılandırması

config.php gibi bir dosyada tanımlayın:

<?php
define('DB_HOST', 'localhost');
define('DB_NAME', 'veritabani');
define('DB_CHARSET', 'utf8mb4');
define('DB_USER', 'root');
define('DB_PASS', '');

2. ORM Sınıfını Dahil Et

require 'config.php';
require 'Orm.php';

🔧 Kullanım

✅ Model Tanımı

Her modelin kendi sınıfı olmalı. Örneğin:

class Kullanici extends Orm {
    protected $fillable = ['ad', 'email'];
    protected $tablo = 'kullanicilar';
}

Not: Alternatif olarak constructor ile tablo adı da verilebilir:

new Orm('kullanicilar')

📄 Kayıt Listeleme

$kullanici = new Kullanici();
$veriler = $kullanici->where('aktif', 1)->orderBy('id', 'DESC')->get();

👤 Tek Kayıt

$kullanici = (new Kullanici())->find(1);

➕ Yeni Kayıt

$k = new Kullanici();
$k->fill([
    'ad' => 'Tanju',
    'email' => 'tanju@example.com'
]);
$k->save();

✏️ Güncelleme

$k = (new Kullanici())->find(1);
$k->email = 'yeni@example.com';
$k->save();

❌ Silme / Soft Delete

$k = (new Kullanici())->find(1);
$k->delete(); // softDelete() özelliği açıksa deleted_at kolonunu günceller

🔁 İlişkiler

hasMany:

class Kullanici extends Orm {
    public function yazilar() {
        return $this->hasMany(Yazi::class, 'kullanici_id');
    }
}

belongsTo:

class Yazi extends Orm {
    public function yazar() {
        return $this->belongsTo(Kullanici::class, 'kullanici_id');
    }
}

Eager Loading:

$veriler = (new Yazi())->with('yazar')->get();

✅ Doğrulama (Validation)

class Kullanici extends Orm {
    protected $rules = [
        'ad' => ['required', 'min:3'],
        'email' => ['required', 'email', 'unique']
    ];
}
$k = new Kullanici();
$k->fill($_POST);

if ($k->validate()) {
    $k->save();
} else {
    print_r($k->getErrors());
}

🔄 Dönüştürmeler

$k = (new Kullanici())->find(1);

$array = $k->toArray();
$json  = $k->toJson();

📄 Sayfalama

$k = new Kullanici();
$sonuc = $k->where('aktif', 1)->paginate(2, 10); // 2. sayfadan 10 kayıt getir

// $sonuc['data'], $sonuc['toplam'], $sonuc['sayfa_sayisi'] vs.

🎯 Notlar

  • Her model sınıfı Orm sınıfından türetilmeli
  • Model başında tablo adı belirtebilir ya da constructor'da verebilirsin
  • softDelete, timestamps, fillable, guarded gibi özellikler model özelinde açılıp kapatılabilir

💬 Katkıda Bulunmak

Bu ORM sınıfı, sade projeler için ideal bir başlangıçtır. Pull request veya issue ile katkıda bulunmaktan çekinme! 🙌

🪪 Lisans

MIT License

统计信息

  • 总下载量: 2
  • 月度下载量: 0
  • 日度下载量: 0
  • 收藏数: 1
  • 点击次数: 0
  • 依赖项目数: 0
  • 推荐数: 0

GitHub 信息

  • Stars: 1
  • Watchers: 0
  • Forks: 0
  • 开发语言: PHP

其他信息

  • 授权协议: MIT
  • 更新时间: 2025-07-14