Pionia Core

Porm extends BaseBuilder
in package

This should the preferred way to interact with the Database in the Pionia Framework. It is a wrapper around the Medoo library.

Tags
see
BaseBuilder

for the methods available to you.

see
Db

for the underlying implementation.

Table of Contents

Constants

PORM_VERSION  = "1.0.8"
The version of the Porm package

Properties

$database  : mixed
The Database object to use
$database  : Database
$alias  : string|null
$allowFilterOnly  : bool
$columns  : string|array<string|int, mixed>|null
$preventHas  : bool
$preventRaw  : true
$resultSet  : mixed
$table  : mixed
The Database table to use. This is for interoperability with other versions of Porm
$where  : array<string|int, mixed>

Methods

__construct()  : mixed
asJson()  : bool|string
asObject()  : mixed
avg()  : string|null
columns()  : BaseBuilder
This defines the table column names to return from the Database
count()  : int|null
deleteAll()  : PDOStatement|null
This deletes all items that match the where clause
deleteById()  : PDOStatement|null
This is under the hood similar to deleteOne but it is more explicit
filter()  : Builder
This switches the query to filter mode. It is useful for conditional querying.
first()  : object|array<string|int, mixed>|null
This grabs the first [n] items from the Database based on the pkField given
from()  : BaseBuilder
This sets the table to use
fromContainer()  : BaseBuilder|null
This grabs the database connection from the container if we are using a container
get()  : object|array<string|int, mixed>|null
Fetches a single item from the Database.
getDatabase()  : Database|null
has()  : bool
This checks if the table has a record that matches the where clause
info()  : array<string|int, mixed>
Returns the details of the current db connection
inTransaction()  : void
Using transactions. This is a wrapper for the action method in the Core class.
join()  : object|null
Opens the portal to the joins builder. Once you call this, you can call the join methods
last()  : object|array<string|int, mixed>|null
Grab the last item from the Database based on the pkField clause
logLastQuery()  : string|null
Logs the last query that was run
logs()  : array<string|int, mixed>
Return all executed queries.
max()  : string|null
min()  : string|null
random()  : array<string|int, mixed>|mixed|object
Fetches random n items from the table, default to 1
raw()  : Raw
rawQuery()  : mixed
This assists to perform raw sql queries
save()  : object
Saves and returns the saved item as an object
sum()  : string|null
table()  : BaseBuilder
This is for running queries. Should be called first
update()  : PDOStatement|null
using()  : TableLevelQueryTrait
This sets the connection to the Database to use for the current query.
setup()  : void
Sets up the database connection
checkFilterMode()  : void
This prevents the use of non-filtering methods in filter mode.

Constants

PORM_VERSION

The version of the Porm package

public string PORM_VERSION = "1.0.8"

Properties

$database

The Database object to use

public mixed $database

$alias

private string|null $alias

The alias to use, will defualt to the table name provided.

$allowFilterOnly

private bool $allowFilterOnly = false

Lock out the use of any other method other than filter

$columns

private string|array<string|int, mixed>|null $columns = '*'

The columns to select

$preventHas

private bool $preventHas = false

Lock out the use of filter

$preventRaw

private true $preventRaw = false

Lock out the use of raw queries

$resultSet

private mixed $resultSet

The result set to call asObject and asJson on.

$table

The Database table to use. This is for interoperability with other versions of Porm

private mixed $table

Methods

__construct()

public __construct([ContainerInterface|Database|string|null $connection = 'db' ][, string|null $containDbKey = 'database' ]) : mixed
Parameters
$connection : ContainerInterface|Database|string|null = 'db'
$containDbKey : string|null = 'database'

avg()

public avg(string $column, array<string|int, mixed>|null $where) : string|null
Parameters
$column : string
$where : array<string|int, mixed>|null
Tags
see
Core::avg()
Return values
string|null

columns()

This defines the table column names to return from the Database

public columns([string|array<string|int, mixed> $columns = "*" ]) : BaseBuilder

If you're in join mode, then all ambigous columns should define the table as an alias

Parameters
$columns : string|array<string|int, mixed> = "*"

The columns to select defaults to * for all.

Tags
throws
Exception
example
  $res1 = Porm::from('users')->columns('first_name')->get(1); // fetches the first name of the user with id 1
  $res2 = Porm::from('users')->columns(['first_name', 'last_name'])->get(1); // fetches the first name and last name of the user with id 1
  $res3 = Porm::from('users')->columns(['first_name', 'last_name'])->filter(['last_name' => 'Pionia'])->all(); // fetches the first name and last name of all users with last name Pionia


// In joins

 $res4 = Porm::from("users", "u")
->columns(["u.id", "role_name", "role.created_at"])
->join()->left("role", [u.role_id => id])
->all();
Return values
BaseBuilder

The current Porm object

count()

public count([string|null $column = null ][, array<string|int, mixed>|null $where = null ]) : int|null
Parameters
$column : string|null = null
$where : array<string|int, mixed>|null = null
Tags
see
Core::count()
Return values
int|null

deleteAll()

This deletes all items that match the where clause

public deleteAll(array<string|int, mixed> $where) : PDOStatement|null
Parameters
$where : array<string|int, mixed>
Tags
throws
Exception
example
 $res1 = Porm::from('users')->deleteAll(['name' => 'John']); // deletes all users with name John
 $res2 = Porm::from('users')->deleteAll(['last_name' => 'Pionia', 'first_name'=>'Framework']); // deletes all users with last name Pionia and first_name as Framework
Return values
PDOStatement|null

deleteById()

This is under the hood similar to deleteOne but it is more explicit

public deleteById(string|int $id[, string|null $idField = 'id' ]) : PDOStatement|null
Parameters
$id : string|int
$idField : string|null = 'id'
Tags
throws
Exception
Return values
PDOStatement|null

filter()

This switches the query to filter mode. It is useful for conditional querying.

public filter([array<string|int, mixed>|null $where = [] ]) : Builder
Parameters
$where : array<string|int, mixed>|null = []

The where clause to use

Tags
throws
Exception
example
 $res1 = Porm::from('users')->filter(['id' => 1])->get(); // fetches a user with id 1
 $res2 = Porm::from('users')->filter(['last_name' => 'Pionia', 'first_name'=>'Framework'])->all(); // fetches all users with last name Pionia and first_name as Framework
 $res2 = Porm::from('users')->filter(['last_name' => 'Pionia'])->limit(1)->startAt(2); // fetches a user with last name Pionia and first_name as Framework
Return values
Builder

first()

This grabs the first [n] items from the Database based on the pkField given

public first([int|null $size = 1 ][, array<string|int, mixed>|null $where = [] ][, string $pkField = 'id' ]) : object|array<string|int, mixed>|null
Parameters
$size : int|null = 1

The number of items to fetch

$where : array<string|int, mixed>|null = []

The where clause to use

$pkField : string = 'id'

The primary key field to use

Tags
throws
Exception
Return values
object|array<string|int, mixed>|null

from()

This sets the table to use

public static from(string $table[, string|null $alias = null ][, string|null $using = null ]) : BaseBuilder
Parameters
$table : string

The table to use

$alias : string|null = null

The alias to use

$using : string|null = null

The connection to use

Tags
throws
BaseDatabaseException
example
    Table::from('user') // notice this here
      ->get(['last_name' => 'Pionia']);
Return values
BaseBuilder

fromContainer()

This grabs the database connection from the container if we are using a container

public fromContainer(ContainerInterface $container[, string|null $containDbKey = 'database' ]) : BaseBuilder|null
Parameters
$container : ContainerInterface
$containDbKey : string|null = 'database'
Tags
throws
ContainerExceptionInterface
throws
NotFoundExceptionInterface
Return values
BaseBuilder|null

get()

Fetches a single item from the Database.

public get([int|array<string|int, mixed>|string|null $where = null ][, string|null $idField = 'id' ]) : object|array<string|int, mixed>|null

If the where clause is not passed, it fetches the last item in the table. If the where clause is an integer, it fetches the item with the id. If the where clause is an array, it fetches the item that matches the where clause. If the where clause is null, it fetches the last item in the table.

Parameters
$where : int|array<string|int, mixed>|string|null = null
$idField : string|null = 'id'

defaults to id, pass this if you want to use a different field as the id other than id

Tags
throws
Exception
example
   $res1 = Porm::from('users')->get(1); // fetches a user with id 1
   $res2 = Porm::from('users')->get(['id' => 1]); // fetches a user with id 1
   $res3 = Porm::from('users')->get(['last_name' => 'Pionia', 'first_name'=>'Framework']); // fetches a user with last name Pionia and first_name as Framework
  $res4 = Porm::from('users')->get(); // fetches the latest user in the table
Return values
object|array<string|int, mixed>|null

has()

This checks if the table has a record that matches the where clause

public has(string|array<string|int, mixed>|int|null $where[, string|null $pkField = 'id' ]) : bool
Parameters
$where : string|array<string|int, mixed>|int|null
$pkField : string|null = 'id'
Tags
throws
Exception
example
     $res1 = Porm::from('users')->has(1); // with integer where clause that defaults to id = 1
     $res2 = Porm::from('users')->has(['id' => 1]); // with array where clause
Return values
bool

info()

Returns the details of the current db connection

public info() : array<string|int, mixed>
Return values
array<string|int, mixed>

inTransaction()

Using transactions. This is a wrapper for the action method in the Core class.

public inTransaction(callable $callback) : void

To access data outside the transaction, Create a result variable and refer to the transaction callback with the keyword use, and you can get data back after when you assign it from inside.

Parameters
$callback : callable

The callback to run. It should return a void.

Tags
example
     $row = null;
     Table::from('qa_criteria')
           ->inTransaction(function (Table $instance) use (&$row) {
                 $row = $instance->save([
                     'name' => 'Status 3',
                     'description' => 'Must be single 4',
                     'best_of_total' => 6,
                 ]);
             });

     var_dump($row);
throws
Exception

join()

Opens the portal to the joins builder. Once you call this, you can call the join methods

public join([array<string|int, mixed>|null $where = null ]) : object|null
Parameters
$where : array<string|int, mixed>|null = null
Tags
example
$res4 = Porm::from("users", "u")
->columns(["u.id", "role_name", "role.created_at"])
->join()->left("role", [u.role_id => id])
->all();
Return values
object|null

last()

Grab the last item from the Database based on the pkField clause

public last([int|null $size = 1 ][, array<string|int, mixed>|null $where = [] ][, string $pkField = 'id' ]) : object|array<string|int, mixed>|null
Parameters
$size : int|null = 1

The number of items to fetch

$where : array<string|int, mixed>|null = []

The where clause to use

$pkField : string = 'id'

The primary key field to use

Tags
throws
Exception
Return values
object|array<string|int, mixed>|null

logLastQuery()

Logs the last query that was run

public logLastQuery() : string|null
Return values
string|null

The last query that was run

logs()

Return all executed queries.

public logs() : array<string|int, mixed>

This function will only return all records if set logging => true on initialization, otherwise it will only return one last record by default.

Return values
array<string|int, mixed>

The columns to select

max()

public max(string $column, array<string|int, mixed>|null $where) : string|null
Parameters
$column : string
$where : array<string|int, mixed>|null
Tags
see
Core::max()
Return values
string|null

min()

public min(string $column, array<string|int, mixed>|null $where) : string|null
Parameters
$column : string
$where : array<string|int, mixed>|null
Tags
see
Core::min()
Return values
string|null

random()

Fetches random n items from the table, default to 1

public random([int|null $limit = 1 ][, array<string|int, mixed>|null $where = null ]) : array<string|int, mixed>|mixed|object
Parameters
$limit : int|null = 1
$where : array<string|int, mixed>|null = null
Tags
example
    $res1 = Porm::from('users')->random(); // fetches a random user
    $res2 = Porm::from('users')->random(5); // fetches 5 random users
    $res3 = Porm::from('users')->random(5, ['last_name' => 'Pionia']); // fetches 5 random users with last name Pionia
throws
Exception
Return values
array<string|int, mixed>|mixed|object

raw()

public raw(string $query[, array<string|int, mixed>|null $params = [] ]) : Raw
Parameters
$query : string

The query to run

$params : array<string|int, mixed>|null = []

The parameters to pass prepare along with the query

Tags
throws
Exception

If we are in any other realm than RAW

Return values
Raw

rawQuery()

This assists to perform raw sql queries

public static rawQuery(string $query[, array<string|int, mixed>|null $params = [] ][, string|null $using = 'db' ]) : mixed
Parameters
$query : string
$params : array<string|int, mixed>|null = []
$using : string|null = 'db'
Tags
throws
Exception

save()

Saves and returns the saved item as an object

public save(array<string|int, mixed> $data) : object
Parameters
$data : array<string|int, mixed>

The data to save. Must be an associative array

Tags
throws
Exception
example
   $res = Porm::from('users')->save(['first_name' => 'John', 'last_name' => 'Doe']);
   echo $res->id;
Return values
object

The saved object

sum()

public sum(string $column, array<string|int, mixed>|null $where) : string|null
Parameters
$column : string
$where : array<string|int, mixed>|null
Tags
see
Core::sum()
Return values
string|null

table()

This is for running queries. Should be called first

public static table(string $table[, string|null $alias = null ][, string|null $using = null ]) : BaseBuilder
Parameters
$table : string
$alias : string|null = null
$using : string|null = null
Tags
throws
BaseDatabaseException
since

v1.0.2 You can this method instead of from(), but this is more readable

see
from()
Return values
BaseBuilder

update()

public update(array<string|int, mixed> $data, array<string|int, mixed>|int|string $where[, string|null $idField = 'id' ]) : PDOStatement|null
Parameters
$data : array<string|int, mixed>
$where : array<string|int, mixed>|int|string
$idField : string|null = 'id'
Tags
throws
Exception
Return values
PDOStatement|null

using()

This sets the connection to the Database to use for the current query.

public using([string|Database|BaseBuilder|ContainerInterface $connection = 'db' ][, string|null $containerDbKey = null ]) : TableLevelQueryTrait

It can be used to switch between Database connections.

Parameters
$connection : string|Database|BaseBuilder|ContainerInterface = 'db'

The connection to use, defaults to 'db'

$containerDbKey : string|null = null
Tags
throws
Exception
Return values
TableLevelQueryTrait

setup()

Sets up the database connection

protected setup(mixed $connection) : void
Parameters
$connection : mixed

checkFilterMode()

This prevents the use of non-filtering methods in filter mode.

private checkFilterMode([string $msg = 'Query is in filter mode, you cannot use this method in filter mode' ]) : void

Case here is like calling get() on join() yet join() return no resultset yet.

Parameters
$msg : string = 'Query is in filter mode, you cannot use this method in filter mode'

The message to throw

This is primarily used internally for the purpose.

$this->checkFilterMode("You cannot delete at this point in the query, check the usage of the `delete()` method in the query builder for ".$this->table);
Tags
throws
Exception

        
On this page

Search results