Menu

## Porm extends BaseBuilder
in package

Porm.php : 30

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

BaseBuilder.php : 40

The version of the Porm package

`public string PORM_VERSION = "1.0.8"`

### Properties

#### $database

BaseBuilder.php : 46

The Database object to use

`public mixed $database`

#### $database

BaseBuilder.php : 0
`public Database $database`

The Database object to use

#### $alias

BaseBuilder.php : 57
`private string|null $alias`

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

#### $allowFilterOnly

BaseBuilder.php : 67
`private bool $allowFilterOnly = false`

Lock out the use of any other method other than filter

#### $columns

BaseBuilder.php : 77
`private string|array<string|int, mixed>|null $columns = '*'`

The columns to select

#### $preventHas

BaseBuilder.php : 62
`private bool $preventHas = false`

Lock out the use of filter

#### $preventRaw

BaseBuilder.php : 81
`private true $preventRaw = false`

Lock out the use of raw queries

#### $resultSet

BaseBuilder.php : 72
`private mixed $resultSet`

The result set to call asObject and asJson on.

#### $table

BaseBuilder.php : 52

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

`private mixed $table`

#### $where

BaseBuilder.php : 83
`private array<string|int, mixed> $where = []`

### Methods

#### __construct()

BaseBuilder.php : 90
`public __construct([ContainerInterface|Database|string|null $connection = 'db' ][, string|null $containDbKey = 'database' ]) : mixed`

##### Parameters

$connection : ContainerInterface|Database|string|null = 'db'
$containDbKey : string|null = 'database'

#### asJson()

TableLevelQueryTrait.php : 149
`public asJson() : bool|string`

##### Tags

throws
  Exception

##### Return values

bool|string

#### asObject()

TableLevelQueryTrait.php : 159
`public asObject() : mixed`

##### Tags

throws
  Exception

#### avg()

AggregateTrait.php : 53
`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()

TableLevelQueryTrait.php : 266

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()

AggregateTrait.php : 27
`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()

TableLevelQueryTrait.php : 328

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()

TableLevelQueryTrait.php : 361

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()

TableLevelQueryTrait.php : 234

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()

TableLevelQueryTrait.php : 395

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()

BaseBuilder.php : 169

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()

BaseBuilder.php : 104

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()

TableLevelQueryTrait.php : 189

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

#### getDatabase()

BaseBuilder.php : 198
`public getDatabase() : Database|null`

##### Return values

Database|null

#### has()

TableLevelQueryTrait.php : 49

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()

BaseBuilder.php : 252

Returns the details of the current db connection

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

##### Return values

array<string|int, mixed>

#### inTransaction()

BaseBuilder.php : 240

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()

TableLevelQueryTrait.php : 378

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()

TableLevelQueryTrait.php : 421

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()

BaseBuilder.php : 150

Logs the last query that was run

`public logLastQuery() : string|null`

##### Return values

string|null —

The last query that was run

#### logs()

BaseBuilder.php : 140

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()

AggregateTrait.php : 65
`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()

AggregateTrait.php : 77
`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()

TableLevelQueryTrait.php : 79

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()

TableLevelQueryTrait.php : 216
`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()

BaseBuilder.php : 207

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()

TableLevelQueryTrait.php : 118

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()

AggregateTrait.php : 41
`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()

BaseBuilder.php : 192

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()

TableLevelQueryTrait.php : 135
`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()

TableLevelQueryTrait.php : 284

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()

BaseBuilder.php : 117

Sets up the database connection

`protected setup(mixed $connection) : void`

##### Parameters

$connection : mixed

#### checkFilterMode()

TableLevelQueryTrait.php : 347

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

## Search results