tp6框架中数据库和模型中数据增删查改的简单对比
1.应用场景
数据库:适合简单、较小的项目
模型:可以把模型看成是数据库的增强版,适合比较复杂的应用场景
2.连接
数据库:
在根目录的 config 下的 database.php 可以设置数据库连接信息,主要修改一下几条:
'database' => Env::get('database.database', '数据库名称')
'username' => Env::get('database.username', '用户名'),
'password' => Env::get('database.password', '密码'),
但在本地测试, 会优先采用.env 的配置信息, 我们和 database 配置对应上即可;
使用:
在控制器目录下,创建自己的php文件,数据库的基本操作就可以在该文件下完成。
$user=Db::table('tp_user')->select();//使用Bb::table('表名')进行调用
模型:
1.模型的建立和使用
- 首先保证数据库的连接
- 模型会自动对应数据表,模型的命名规则是除去表前缀的数据表名称。
1.创建一个跟控制器平级的的目录model
2.在model中创建模型文件
如:你有一个Users数据表,则在model目录下创建一个Userphp文件。定义一个和数据库表向匹配的模型;
class User extends Model{}
创建好模型后,在控制器进行调用。
use app\model\User;
class DataModel
{
public function index()
{
return json(User::select());//调用直接使用User::
}
}
3.数据的增删改查
a)数据新增
- 数据库:将新增数据写入变量中,使用insert()方法进行新增。
$data = [
'username' => '辉夜',
'password' => '123',
'gender' => '女',
'email' => 'huiye@163.com',
];
Db::name('user')->insert($data);
-
使用 insertAll()方法, 可以批量新增数据,$data变量中保持数组结构一致;
-
也可直接使用save()方法新增。
模型的数据新增
-
模型:使用实例化的方式添加一条数据,使用save()方法写入数据库。
use app\model\User as UserModel;//as重命名
$user = new UserModel();//首先实例化:
$user->username = '李白';
$user->password = '123';
$user->gender = '男';
$user->save();
- 更推荐使用create()静态方法创建新增的数据
$user = UserModel::create([
'username' => '李白',
'password' => '123',
'gender' => '男',
'email' => 'libai@163.com',
], ['username', 'password', 'details'], false);
//参数 1 是新增数据数组, 必选
//参数 2 是允许写入的字段, 可选
//参数 3 为是否 replace 写入, 默认 false 为 Insert 写入
b)数据删除
数据库
极简删除可以根据主键直接删除, 删除成功返回影响行数, 否则 0;
Db::name('user')->delete(51);
模型:使用 find()方法, 通过主键(id)查询到想要删除的数据;然后再通过 delete()方法, 将数据删除, 返回布尔值
$user = UserModel::find(93);
$user->delete();
- 也可以使用静态方法调用 destroy()方法, 通过主键(id)删除数据;
UserModel::destroy(92)
c)数据查询
数据库:
查询一条数据, 使用 find()方法, 需指定 where 条件;
return Db::table('tp_user')->where('id', 27)->find();
模型
使用 find()方法, 通过主键(id)查询到想要的数据;
$user = UserModel::find(129);
return json($user);
d)数据修改
数据库:
使用 update()方法来修改数据, 修改成功返回影响行数, 没有修改返回 0;
$data = [
'username' => '李白'
];
return Db::name('user')->where('id', 38)->update($data);
模型:
使用 find()方法获取数据, 然后通过 save()方法保存修改, 返回布尔值;
$user = UserModel::find(118);
$user->username = '李黑';
$user->email = 'lihei@163.com';
$user->save();
总结:
- 数据库在controller目录下创建自己的文件,并进行增删改查即可。
- 模型需要在controller和model两个目录下创建一个模型文件和控制器文件结合使用,但是使用过程中 逻辑更清晰。
- 在数据库中使用
Db::name('数据表名')
,而模型中因为在model文件下提前定义了数据表,所以在控制器中声名后可以直接使用。 - 模型中的查询数据前期和数据库基本一摸一样,但是在后期模型的方法会更加丰富。
为了对比数据库和模型,本文总结了数据库和模型中最基本的增删改查,其中更详细的方法和使用,需要进一步学习。