关于拾年之璐:
微信公众号:知行校园汇,点击查看,欢迎关注
本文主要内容:
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
,即可。
以上是数据库的基本操作。