atayahmet/database-active-record-class

专为快速、实用的数据库活动记录操作编写的

dev-master / 1.x-dev 2014-11-25 20:27 UTC

This package is auto-updated.

Last update: 2024-09-17 10:04:34 UTC


README

可用字段

  • 此库完全是为 composer 包编写的
  • 这将与 vendor 自动加载一起工作
  • 使用了 Codeigniter 活动记录类接口
  • 这些库使用简单且快速的方法

让我们开始吧!

- 数据库配置

- 我们首先建立数据库连接

- SELECT

- FROM

- WHERE

- LIKE 组合

- ORDER BY

- GROUP BY

- HAVING

- LIMIT

- OFFSET (跳过数据)

- JOIN 表

- INSERT

- UPDATE

- DELETE

- COUNT

- 原生查询

- GET

- 数据库前缀

- 数行

- 行

- 处理查询结果

- 受影响行

- SQL 导出

数据库配置

首先,让我们从数据库设置开始。

数据库配置文件在 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');

希望对您有所帮助!

请讨论您在项目下识别的错误和不理解的部分,可以在开放问题中讨论。

编码愉快!