数据表的创建与配置:
laravel与数据库交互的方式有两种:
- DB类操作数据库
- 模型操作数据库
1).数据表的创建与配置:
打开Navicat-----找到自己的数据库名字-----右击-----创建数据库-----填写自己要创建的数据库名/字符集/排列规则
创建完成后打开自己创建的数据库-------打开查询-------输入sql语句------最后运行------点击自己的创立的数据库表位置------此时member表就创立成功了(如没有出现创立的表,右击刷新下就好了)
//创建表的sql语句
create table member(
id int primary key auto_increment,
name varchar(32) not null,
age tinyint unsigned not null,
email varchar(32) not null
)engine myisam charset utf8mb4;
表:
2).在laravel中配置数据库:
在自己创建的laravel项目中的.env文件里配置;;
改成自己创建的数据库名,自己数据库密码,。。。。。
也可以在config目录下面的database.php文件里面配置。使用env函数,表示先从env文件里面获取,如果获取成功则使用,如果获取失败,则使用env函数的第二个参数。
注意:如果是php artisan serve方式启动的,修改了配置文件,则需要重新启动,才能读取修改后的配置文件;如果是wamp/lamp等环境则不需要重启。
3).定义增删改查的路由
route/web.php
不要忘了单引号’’’’’
//增删改查
Route::get('add','TestController@add');
Route::get('del','TestController@del');
Route::get('mod','TestController@mod');
Route::get('select','TestController@select');
定义模型:
1).定义模型
在app目录下
2).命名规则,
一般没有要求,采用大驼峰.php
例如:User.php Member.php
3).创建模型
在laravel项目下,按住shift键+鼠标右击----打开命令行窗口------输入php artisan make:model 模型名字–回车----就创建成功了-----此时创建的Member就在app目录下
4).定义模型
第一:(必做)定义一个$table属性,值是不要前缀的表名(真实的表名),如果不指定则使用类名的复数形式作为表名。如果模型为Member模型在不指定table属性的情况下,其默认会去找members表。修饰词:protected
第二:(可选)定义$primaryKey属性,值是主键名称,如果需要使AR模式的find方法,则可能需要指定主键(Model::find(n)),在主键字段不是id的时候则需要指定主键。修饰词:protected
第三:(可选)必填 定义$timestamps属性,值是false,如果不设置为false,默认为true。则默认会操作表中的created_at和updated_at字段,我们表中一般没有这两个字段,所以设置为false,表示不要操作这两个字段。修饰词:public。【并不是所有的增加、修改操作都会自动帮我们去更新这2个字段】
//定义模型关联数据表
protected $table='member';
//禁止模型自动更新数据表中的creat_at和update_at字段
//默认为true、时间戳属性
public $timestamps=false;
DB类和模型在控制器中的使用
DB类可以直接操作数据库中的所有表;
DB类使用:
1)在TestController中引用;
//引入DB,db可以直接操作所有的数据表
use DB;
其中DB是是引入的别名;别名的引入是在,config/app.php文件夹下
(不需要手动引入,默认引入过了)
2).使用DB类:
在TestController里面添加一个方法:
上边add方法一定定义过路由了;
**DB调用表,table(‘表名’)**表名是自己在数据库里创建的member表
//添加的方法
public function add(){
//DB调用表,table(‘表名’)
dump(DB::table('member'));
}
在网页中输入域名加add
现在DB类就是能使用了;
模型的使用:
1).引入模型在TestController里面印日
//模型引入
use app\Member;
模型在控制器中的使用方法有两种:
- 直接使用DB类一样的方法:以嗲用静态方法的形式为主,该方法下不需要实例化。
Member::get();
- 实例化再去调用,比较普遍。例如:
$model=new Member();$model->get();
以上两种方法的选择标准:
- 如果使用laravel框架自带的,任意选择;
- 如果使用的方法是用户在模型里自己定义的,使用第二种形式。