sagi/sagi

sagi basic database orm


License
MIT

Documentation

Sagi

Sagi Database Class

Initialize


 $configs = [
    'host'  => 'localhost',
    'username' => 'root',
    'password' => '',
    'dbname' => 'test'
    ];

 $db = new Database($configs , $table);

 // you may want to set table after initialize, 

 $db = new Database($configs);

 $db->setTable('users');

Create


   $db->create([
       'username' => 'admin',
       'password' => 123456
    ]);

Delete


 $db->where('username', 'admin')->delete();

Update


  $db->where('username', 'admin')->update([
      'username' => 'newAdmin'
      ]);

Read

Select


 $db->select('username,password'); 

  // or

 $db->select(['username', 'password']);

Where


 $db->where('username', 'admin');

 // or

 $db->where('username', 'admin', '=');

 // or

 $db->where(['username', '=', 'admin']);

orWhere


 $db->orWhere('username', 'admin');

 // or

 $db->orWhere('username', 'admin', '=');

 // or

 $db->orWhere(['username', '=', 'admin']);

Limit


 $db->limit(15);

 // or 

 $db->limit([15]);

 // or 

 $db->limit([0,15]);

Order


$db->order('id', 'DESC');

GroupBy


 $db->group('id');

having

  $db->group('id')->having('COUNT(id) > 10');

Join


$db->join('targetTable', ['targetColumn' => 'ourColumn']);

first

gets only first data


 $data = $db->first();

all

gets all datas with fetchAll method


  $datas = $db->all();

  echo $data->username;

  foreach($datas as $data){
    echo $data->username;
  }

Relations

one


$db->relation('posts', ['user_id', 'id']);

$post = $db->posts; 

// or

$post = $db->posts();

// you may want to set alias

$db->relation(['aliasName', 'tableName'], ['user_id', 'id']);

$post = $db->aliasName;

// or 
$post = $db->aliasName();

many


$db->relation('posts', ['user_id', 'id', 'many']);



Examples;


 $db->where('username', 'admin')->relation('posts', ['user_id', 'id', 'many']);


 $data = $db->first();


 foreach($db->posts as $post)
 {
    echo $post->id;
 }

SubRelatives

You can set subrelatives


$db->relation(['post', 'posts'], ['user_id', 'id']);

$post = $db->post;

$post->relation(['category', 'categories'], ['id', 'category_id']);

// or  

$db->relation(['posts.category', 'categories']); // ['firstTableName.secondTableName.aliasName', 'tableName']

// be careful, you set on $db not on $post;

echo $post->category->category_name;