本文主要内容:
- 4.1 配置数据库
- 4.2 三种常用查询方式
- 1. 原生SQL
- 2. 构造器查询
- 3. 使用模型
4.1 配置数据库
数据库的配置在 config/database.php,如果是本地可以直接配置 .env 文件。
我们通过 .env 文件配置数据库连接的相关信息,以提供给 database 读取。如下所示:

然后新建一个链接数据库的控制器 DataController ,来模拟链接数据库的各种操作:
php artisan make:controller DataController添加如下函数,以及路由,后续各种操作在此路由下实现:
//方法
public function index(){
return 'index';
}
//路由
Route::get('db/index', 'DataController@form');并测试是否路由成功。
至此,数据库的基本配置完成。
其次,可以在idea开发工具中添加数据库的连接,防止在编写SQL的时候,造成SQL语句报错。

连接的时候,可能会报时区错误,修改如下:

4.2 三种常用查询方式
Laravel框架支持原生、查询构造器和Eloquent ORM(关系型对象映射器)来操作数据库。
1. 原生SQL
在上面创建的 index 方法中写入如下内容:
public function index(){
$user = DB::select('select * from laravel_users');
return $user;
}这时,查询会返回所有的 用户数组user ,最终返回给路由的是JSON格式:

2. 构造器查询
格式如下:
public function index(){
$user = DB::table('laravel_users')->find(24);
return response()->json($user);
}查询结果:

这里注意,返回结果不同于原生SQL查询的返回结果。
find() 方法返回的是对象,而路由要求返回的结果是数组。所以需要进行 response 转换。
此外,返回结果还可以直接用数组转换,格式:
public function index(){
$user = DB::table('laravel_users')->find(25);
return [$user];
}查询结果:

对比一下,第二种方法多了一个数组的括号。
另外,这种查询方式中的 table() 中的参数是表名。
对于有前缀的表名,可以在 database.php 中配置前缀

然后 table() 方法只需要写表的后缀即可。
$user = DB::table('users')->find(25);3. 使用模型
所谓模型,是将表和模型进行绑定的
模型的创建方法:
php artisan make:model Http/Models/User这里注意,如果是新版本的Laravel,会默认在app文件下,存在一个Models文件夹,并且里边有一个初始的User.php的模型,该模型是中间件权限控制的。
如果继续使用上面的命令,则会在Models文件夹下新建一系列文件。
所以应该使用下面的命令:
php artisan make:model Models/User然后修改控制类中的方法为:
public function index(){
$user = User::all();
return $user;
}这时,执行结果为:

也是个数组。
这里注意,如果你的数据库表名是单数形式,比如:user,再次执行,会提示找不到该表:

这是因为模型编码规范要求数据表是复数,这里的复数并不是单纯加s,还有es,或者其他复数的变体。
可以使用字符串助手: Str::plural() 来判断英文单词的复数情况:
return Str::plural('bus'); //buses
return Str::plural('user'); //users
return Str::plural('child'); //children所以,这里有两种解决方案,一种是根据复数形式修改数据库表名,另一种是在前面创建的User模型中增加以下代码:
protected $table = 'user';即:
class User extends Model
{
use HasFactory;
protected $table = 'user';
}这时,再执行,便不会出错。
注意,如果数据库的表名是多段式,比如用户角色表名为:laravel_role_users,则可以将前缀 laravel_ 配置在 database.php 里,然后创建模型的名字为:RoleUser,即可。
以上是数据库的基本操作。










