Pionia Core

TableLevelQueryTrait

Table of Contents

Methods

asJson()  : bool|string
asObject()  : mixed
columns()  : static
This defines the table column names to return from the CDatabase
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 CDatabase based on the pkField given
get()  : object|array<string|int, mixed>|null
Fetches a single item from the CDatabase.
has()  : bool
This checks if the table has a record that matches the where clause
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 CDatabase based on the pkField clause
random()  : array<string|int, mixed>|mixed|object
Fetches random n items from the table, default to 1
raw()  : Raw
save()  : object
Saves and returns the saved item as an object
update()  : PDOStatement|null
checkFilterMode()  : void
This prevents the use of non-filtering methods in filter mode.

Methods

columns()

This defines the table column names to return from the CDatabase

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

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
static

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 CDatabase 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

get()

Fetches a single item from the CDatabase.

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

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 CDatabase 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

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

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

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

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