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;