molovo/interrogate

此软件包最新版本(v0.2.3)没有可用的许可证信息。

v0.2.3 2017-03-30 11:34 UTC

This package is auto-updated.

Last update: 2024-08-29 04:46:05 UTC


README

Interrogate 是一个轻量级、独立的面向对象关系映射(ORM)工具,适用于 PHP 5.5+。

安装

composer require molovo/interrogate

将包含的 .env.example 文件从 vendor/molovo/interrogate 复制到您的 Web 服务器上的 DOCUMENT_ROOT,并将其重命名为 .env。然后,更新新的 .env 文件以包含您的数据库连接信息。

入门指南

查询是通过链式方法构建的,尽可能遵循 SQL 语法。查询返回一个包含多个 Model 对象的 Collection 对象。

use Molovo\Interrogate\Database;
use Molovo\Interrogate\Query;

Database::bootstrap();

$query = Query::table('users')
    ->select('username', 'email')
    ->where('name', 'Joe Bloggs');

// @var $users Molovo\Interrogate\Collection
$users = $query->fetch();

// @var $user Molovo\Interrogate\Model
foreach ($users as $user) {
    echo $user->username;
    echo $user->email;
}

使用连接

可以通过将另一个 Query 对象传递给 join() 方法来构建包含连接的查询。连接查询返回的模型存储在模型的属性中,使用表名(或别名,如果已定义)。连接查询可以使用点符号比较父查询中的字段,直接使用表名(或别名),或如下使用关键字 parent

use Molovo\Interrogate\Query;

$query = Query::table('users_table', 'users')
    ->select('name')
    ->join(Query::table('addresses_table', 'addresses')
        ->select('town')
        ->on('user_id', 'parent.id'));

$users = $query->fetch();

foreach ($users as $user) {
    // @var $addresses Molovo\Interrogate\Collection
    $addresses = $user->addresses;

    foreach ($addresses as $address) {
        echo $address->town;
    }
}

使用模型

可以为表创建模型类,以允许快速查询创建和在每张表的基础上添加功能。以下是一个模型的最简单形式

namespace Models;

use Molovo\Interrogate\Model;

class User extends Model {}

默认情况下,表名是类名的复数蛇形命名。例如,模型 UserDetail 指的是表 user_details。要使用不同的表名,请定义静态属性 $tableName

class User extends Model {
    protected static $tableName = 'the_users_table';
}

模型使用魔术方法允许静态访问 Query 类中的方法。

$user = User::where('name', 'Joe Bloggs');

// is equivalent to

$user = Query::table('users')->where('name', 'Joe Bloggs');

您还可以静态调用 Collection 类上的方法。

$names = User::toList('name');

// is equivalent to

$collection = Query::table('users')->fetch();
$names = $collection->toList('name');