atayahmet / database-active-record-class
专为快速、实用的数据库活动记录操作编写的
Requires
- php: >=5.3.3
Requires (Dev)
- phpunit/phpunit: ~4.0
- squizlabs/php_codesniffer: ~1.5
This package is auto-updated.
Last update: 2024-09-17 10:04:34 UTC
README
可用字段
- 此库完全是为 composer 包编写的
- 这将与 vendor 自动加载一起工作
- 使用了 Codeigniter 活动记录类接口
- 这些库使用简单且快速的方法
让我们开始吧!
数据库配置
首先,让我们从数据库设置开始。
数据库配置文件在 Db 文件夹中 -> config.php
$current = 'mysql:connect1'; $db = array( 'mysql' => array( 'connect1' => array( 'hostname' => 'localhost', 'username' => 'root', 'password' => '', 'database' => '', 'dbprefix' => '' ) ) );
$current 变量是你想要使用的驱动程序,它允许你使用数据库连接。
示例
当我想定义第二个数据库连接设置时,你需要做以下操作。
'connect2' => array( 'hostname' => 'localhost', 'username' => 'root', 'password' => '', 'database' => '', 'dbprefix' => '' )
我的 $current 变量已经这样了。
$current = 'mysql:connect2';
我们可以按我们想要的方式定义连接。
注意: mysql 需要定义为考虑的候选者。
我们首先建立数据库连接
添加我们的工作区我们的库
use Db\Query as DB;
我们安装了库,并且也设置了一个别名。我选择了 DB 别名。
一个简单的数据库查询
DB::select('*'); DB::get('example_table');
我们直接在上面的表中提出了问题,没有指定任何查询标准。我们可以用以下方式做同样的查询
DB::select('*')->get('example_table');
SELECT
使用 1
DB::select('*')->get('example_table');
使用 2
DB::select('examle_type.*')->get('example_type');
使用 3
DB::select('example_type.id'); DB::select('example_type.name')->get('example_type');
**select_max()**:
$result = DB::select_max('id')->get('example_type'); echo $result->row()->id;
**select_min()**:
$result = DB::select_max('id')->get('example_type'); echo $result->row()->id;
**select_avg()**:
$result = DB::select_avg('age')->get('example_type'); echo $result->row()->age;
**select_sum()**:
$result = DB::select_sum('total')->get('example_type'); echo $result->row()->total;
**distinct()**:
$result = DB::distinct('city')->get('example_type'); echo $result->row()->city;
FROM
from()
$result = DB::select('*')->from('example_table')->get(); echo $result->row()->total;
WHERE
$result = DB::where('city','Istanbul')->get('users'); print_r $result->result_array();
在这里,你可以通过三种方式传递参数到方法中。
方法 1
$result = DB::where('city !=','Istanbul')->get('users'); print_r $result->result_array();
$result = DB::where('age >',19)->get('users'); print_r $result->result_array();
$result = DB::where('age <',19)->get('users'); print_r $result->result_array();
$result = DB::where('age <>',18)->get('users'); print_r $result->result_array();
$result = DB::where('city','Istanbul')->get('users'); print_r $result->result_array();
方法 2
$result = DB::where(array('city' => 'Istanbul'))->get('users'); print_r $result->result_array();
$result = DB::where(array('age >' => 19))->get('users'); print_r $result->result_array();
$result = DB::where(array('age <' => 19))->get('users'); print_r $result->result_array();
$result = DB::where(array('age <>' => 18))->get('users'); print_r $result->result_array();
方法 3
$result = DB::where("city => 'Istanbul'")->get('users'); print_r $result->result_array();
suc as.
如果我们想,我们可以创建一个查询,如下所示
$result = DB::where('id',1) ->where(array('city' => 'Istanbul')) ->where("age <> '18'")->get('users'); print_r $result->result_array();
**or_where()**:```sh $result = DB::where('id',1)->or_where('age',18)->get('users'); ```
**where_in()**:```sh $result = DB::where_in('age',18)->get('users'); ``` 不同的用法:```sh $result = DB::where_in('age',array(18,20,22,23))->get('users'); ``` > **注意**: > 这种组合可以用在所有 **where_in** 上
**or_where_in()**:```sh $result = DB::where('city','Istanbul')->or_where_in('age',18)->get('users'); ```
**where_not_in()**:```sh $result = DB::where_not_in('age',18)->get('users'); ```
**or_where_not_in()**:```sh $result = DB::where('city','Istanbul')->or_where_not_in('age',18)->get('users'); ```
or_where_not_in()
$result = DB::where('city','Istanbul')->or_where_not_in('age',18)->get('users');
or_where_not_in()
$result = DB::where('city','Istanbul')->or_where_not_in('age',18)->get('users');
LIKE 组合
like()
$result = DB::like('name','Ali')->get('users');
$result = DB::like(array('name' => 'Ali', 'city' => Ist))->get('users');
你也可以通过发送第三个参数来定位参考点
before: $result = DB::like('name', 'Ali','before')->get('users'); print out: //users.name LIKE '%Ali' after: $result = DB::like('name', 'Ali','after')->get('users'); print out: //users.name LIKE 'Ali%'
**or_like()**:```sh $result = DB::like('name','Ali')->or_like('city','Ist')->get('users'); ```
**not_like()**:```sh $result = DB::not_like('name','Ali')->get('users'); ```
**or_not_like()**:```sh $result = DB::not_like('name','Ali')->or_not_like('city','Ist')->get('users'); ```
ORDER BY
order_by()
$result = DB::->order_by('name','DESC')->get('users');
**order_by('random')**:```sh $result = DB::->order_by('name','random')->get('users'); ```
GROUP BY
group_by()
$result = DB::group_by('name')->get('users');
HAVING
having()
$result = DB::group_by('name')->having("name = 'Ali'")->get('users');
**or_having():** ```sh $result = DB::group_by('name') ->having("name = 'Ali'")->or_having('age',18)->get('users'); ```
限制
limit()
$result = DB::limit(1)->get('users');
除了offset方法外,也适用于
$result = DB::limit(2,1)->get('users');
OFFSET(跳过数据)
offset()
$result = DB::offset(5)->get('users');
连接表
尽可能简单地将表连接起来。
第一个例子
DB::select('t1.name, t2.city') ->from(DB::dbprefix('users') . ' t1') ->join(DB::dbprefix('cities') . ' t2',"t2.id = t1.city_id",'inner') ->where('t1.age >',18) ->get();
我们将成员表与城市表结合。我们定义了年龄为18岁,并且。
注意: 我们已经将左标记作为连接方法的第三个参数发送。这里可用的参数
- 内连接 (INNER JOIN)
- 左连接 (LEFT JOIN)
- 右连接 (RIGHT JOIN)
- 左外连接 (LEFT OUTER JOIN)
- 右外连接 (RIGHT OUTER JOIN)
- 交叉连接 (CROSS JOIN)
内连接 参数将作为默认值。
让我们举一个不同的例子
DB::select('t1.name, t2.city') ->from(DB::dbprefix('users') . ' t1') ->join(DB::dbprefix('cities') . ' t2',"t2.id = t1.city_id",'inner') ->join(DB::dbprefix('countries') . ' t3','t3.id = t2.country_id','left') ->where('t1.age <',30) ->where('t1.age >',18) ->get();
INSERT
有几种方法可以向表中添加数据。
insert()
第一个
DB::insert('users',array( 'name' => 'Ali', 'city' => 'Istanbul', 'age' => 21 ) )
另一个用法:```sh DB::set('name','Ali'); DB::set('city','Istanbul'); DB::set('age','18'); DB::insert('users'); ``` ```sh DB::set( array( 'name' => 'Ali', 'city' => 'Istanbul/Turkey', 'age' => 18 ) );
DB::insert('users');
<br >
and another use than:
```sh
class User {
public $name = 'Ali';
public $city = 'Istanbul';
public $age = 18;
}
DB::insert('users', new User());
**insert_batch():** ```sh DB::insert_batch('users',array( array( 'name' => 'Ali', 'city' => 'Istanbul', 'age' => 21 ), array( 'name' => 'Erkan', 'city' => 'Ankara', 'age' => 20 ), array( 'name' => 'Emre', 'city' => 'Izmir', 'age' => 19 ) ) ) ```
**insert_id():**
添加后,检索最后一条记录的ID
DB::insert_id();
UPDATE
与插入类似,更新相对简单
update()
DB::where('id',1) ->update('users',array( 'name' => 'Ali', 'city' => 'Istanbul/Turkey', 'age' => 18 ) )
或者
DB::set('name','Ali'); DB::set('city','Istanbul/Turkey'); DB::set('age',18); DB::update('users');
或者
DB::set( array( 'name' => 'Ali', 'city' => 'Istanbul/Turkey', 'age' => 18 ) ); DB::update('users');
**update_batch():**
有时我们想要执行多次更新。
$data = array( array( 'id' => 1, 'name' => 'Ali', 'city' => 'Izmir', 'age' => 19 ), array( 'id' => 2, 'name' => 'Ahmet', 'city' => 'Bursa', 'age' => 21 ), array( 'id' => 3, 'name' => 'Adem', 'city' => 'Antalya', 'age' => 22 ) ); DB::update_batch('users',data, 'id');
DELETE
delete()
DB::where('id',1)->delete('users');
COUNT
以相当简单的方式获取表中的记录数。
count_all()
DB::count_all('users');
此方法将返回指定表中的记录数
**count_all_results():** ```sh DB::from('users') ->where('age >',18) ->or_where('city','Istanbul') ->count_all_results(); ``` > **注意:** 当您想要使用此方法获取总记录数时,尽可能使用此方法
原生查询
如果您说您想要运行原生SQL。
query()
DB::query("SELECT * FROM users WHERE age > 18");
GET
这是一个将运行我们的查询的方法。如果您愿意,可以将查询表名发送到get方法。如果您愿意,您可以选择从以下方法中选择。
get()
DB::get('users');
或者
DB::from('users')->get();
get_where()
$limit = 1; $offset = 2; DB::get_where('users',array('id' => 1),$limit,$offset);
数据库前缀
我们使用我们想要使用的唯一方法来使用表前缀。
DB::dbprefix('users');
行数
我们可以用它来获取查询结果的行数。
num_rows()
$result = DB::get('users'); echo $result->num_rows();
行
允许访问查询结果中的单行。
row()
结果将是对象。
$result = DB::get('users'); print_r $result->row();
或可以指定要访问的行数
print_r $result->row(5);
**row_array():**
结果将是数组。
$result = DB::get('users'); print_r $result->row_array();
或可以指定要访问的行数
print_r $result->row_array(5);
处理查询结果
如果我们想要在循环中使用查询,我们可以用两种方式运行它。
result()
$result = DB::get('users'); print_r $result->result();
注意: 结果将变成对象
**result_array():**
$result = DB::get('users'); print_r $result->result_array();
注意: 结果将变成数组
受影响的行数
affected_rows()
echo DB::affected_rows();
SQL导出
当在页面请求的URL下运行时,所有查询都会返回字符串和工作持续时间。
dump()
一种方式将以表格的形式列出。
echo DB::dump();
如果我们想,我们也可以取一些。
print_r DB::dump('array');
希望对您有所帮助!
请讨论您在项目下识别的错误和不理解的部分,可以在开放问题中讨论。