Ela's Notes
So Be It


Hitokoto ·
[Laravel学习笔记][2]Auth以及Eloquent的简单应用
Elatis   后端, Laravel, 学习笔记, Linux   1098 | 文章字数: 5775 字

蛤?周末有比赛?
update-18-05-28:使用seeder时忘了说要把seeder注册到系统内了,现在加上了

上篇我们学习了如何部署laravel项目,那么这篇就介绍一些laravel自带的功能的使用吧

关于上篇的补充

还有一种方法可以开启laravel服务
首先进入项目目录/public
输入以下指令

php -S IP地址:端口号 //注意-S的S要大写,小写会报错

即可和上篇中的指令一样,开启laravel服务
同样的,可以使用nohup php -S IP地址:端口号 &来后台运行

如果提示端口被占用,首先确定这不是系统预留端口或是被其它你需要的软件占用
然后使用

netstat -ap | grep 端口号

查看占用端口程序的PID,如下面的信息中行末的9295就是它的PID,而后面的php则为程序名

tcp        0      0 138.68.253.187:8964     *:*                     LISTEN      9295/php
tcp        0      0 138.68.253.187:8964     101.75.130.203:54016    ESTABLISHED 9295/php
tcp        0      0 138.68.253.187:8964     101.75.130.203:54208    ESTABLISHED 9295/php
tcp        0      0 138.68.253.187:8964     101.75.130.203:54144    ESTABLISHED 9295/php

然后使用

kill 9295

关闭该程序,9295换为对应的PID

使用自带的 Auth 系统

开启Auth系统

Laravel内置了一个简单的用户注册登录功能界面,适用于一些不需要复杂地管理用户权限的系统
要激活这个功能,先进入项目目录/
然后输入以下指令

php artisan make:auth

接着首先确认你的laravel服务已经在后台运行或是你现在输入命令开启
然后访问IP地址/端口号/login,如果看到如下界面,就说明开启成功了

不过到目前为止我们还不能进行注册,因为还没配置mysql

配置数据库

首先请确认安装了mysql
相关教程可以看这里
教程里的yum相关指令换成apt-get一般适用

创建数据库

首先进入数据库交互界面

 mysql -u root -p

然后输入你的密码
接下来创建一个名为mylaravel(或是其它名字)的数据库

create database mylaravel;        //注意分号

然后更改字符集为utf8mb4,下面那行命令前的mysql>表示你需要在mysql交互界面下输入命令,而mysql>这几个字符不需要输入,以后都是如此

mysql> alter database 数据库名 character set utf8mb4;

完成后输入exit;或是直接CTRL+Z退出mysql交互界面

更改.env配置

进入项目根目录,输入ls -a查看所有目录下的文件
看看有没有名字叫.env的文件,如果没有,使用以下指令从样例复制一份

cp .env.example .env

然后编辑这个.env文件,找到以下这几行

DB_CONNECTION=mysql
DB_HOST=127.0.0.1
DB_PORT=3306
DB_DATABASE=homestead
DB_USERNAME=homestead
DB_PASSWORD=secret

根据你的情况修改(一般只用修改后三行)

建表

一般来说我们要自己编写代码或是手动建表
而laravel有个牛逼的数据库迁移功能
进入项目目录,运行以下指令

php artisan migrate

如果没有报错,就完成了建表的工作

接下来,就可以去域名:端口号/register注册一个用户试试啦~

Eloquent,Migration,Seeder的简单应用

Eloquent是laravel的精髓所在(目前看来).我们要使用的Model类就继承于Eloquent的Model类,自带了许多好用到爆的函数.
下面就介绍一下如何用Eloquent创建一个名为Test的Model类,并创建和应用附属的MigrationSeeder类.

创建Model类

首先进入项目目录,运行以下指令:

php artisan make:model Test

然后去查看项目目录/app,你会发现多了一个Test.php文件.那就是我们刚刚使用Eloquent创建的Model类.

创建Migration和Seeder类

首先我们一口气把这两个类创建好吧

# php artisan make:migration create_tests_table
# php artisan make:seeder TestSeeder

这两句后面的create_tests_tableTestSeeder可以随意替换,会在相应目录下生成对应文件名的.php文件,更多的之后再说.
要注意Migration类的通常命名方式为create_+项目名的复数形式+_table
Seeder类的通常命名方式为项目名+Seeder.

应用刚才创建的类

我们先用migration来创建数据表吧
打开项目目录/migrations/目录,在里面你可以找到一个以日期+我也不知道代表什么的的数字+_create_tests_table.php的文件,这就是我们刚才创建的Migration类,打开它
将其中的up()函数修改为以下内容,指定要创建的表的格式:

public function up()
    {
        Schema::create('tests', function (Blueprint $table) {
            $table->increments('id');
            $table->string('title');
            $table->text('body')->nullable();
            $table->integer('user_id');
            $table->timestamps();
        });
    }

然后保存退出.

接着在项目目录下,运行以下指令来创建新的数据表:

artisan migrate

完成后,你可以在mysql窗口中找到一个新创建的tests表:

root@ubuntu:/home/elatis/Desktop/mylaravel# mysql -u root -p
Enter password:

# 欢迎信息删掉啦

mysql> use mylaravel;
Reading table information for completion of table and column names
You can turn off this feature to get a quicker startup with -A

Database changed
mysql> show tables;
+---------------------+
| Tables_in_mylaravel |
+---------------------+
| migrations          |
| password_resets     |
| tests               |
| users               |
+---------------------+
4 rows in set (0.00 sec)

mysql> 

接下来我们使用Seeder生成假数据

现在先将这个seeder注册到系统内
打开项目目录/database/seeds/DatabaseSeeder.php,将其中的run函数修改为:

public function run()
{
    $this->call(TestSeeder::class);
}

然后打开项目目录/seeds/,在该目录下你可以找到一个TestSeeder.php,这就是我们刚才创建的Seeder类,打开它
将其中的run()函数改为:

public function run()
    {
        for($i = 0; $i < 10; ++$i){
            \App\Test::create([
                'title'   => 'Title '.$i,
                'body'    => 'Body '.$i,
                'user_id' => 1,
            ]);
        }
    }

然后在项目目录下运行以下命令:

php artisan db:seed

完成后你可以在mysql交互窗口下找到生成的假数据:

mysql> select * from tests;
+----+---------+--------+---------+---------------------+---------------------+
| id | title   | body   | user_id | created_at          | updated_at          |
+----+---------+--------+---------+---------------------+---------------------+
|  1 | Title 0 | Body 0 |       1 | 2018-05-21 13:46:14 | 2018-05-21 13:46:14 |
|  2 | Title 1 | Body 1 |       1 | 2018-05-21 13:46:14 | 2018-05-21 13:46:14 |
|  3 | Title 2 | Body 2 |       1 | 2018-05-21 13:46:14 | 2018-05-21 13:46:14 |
|  4 | Title 3 | Body 3 |       1 | 2018-05-21 13:46:14 | 2018-05-21 13:46:14 |
|  5 | Title 4 | Body 4 |       1 | 2018-05-21 13:46:14 | 2018-05-21 13:46:14 |
|  6 | Title 5 | Body 5 |       1 | 2018-05-21 13:46:14 | 2018-05-21 13:46:14 |
|  7 | Title 6 | Body 6 |       1 | 2018-05-21 13:46:14 | 2018-05-21 13:46:14 |
|  8 | Title 7 | Body 7 |       1 | 2018-05-21 13:46:14 | 2018-05-21 13:46:14 |
|  9 | Title 8 | Body 8 |       1 | 2018-05-21 13:46:14 | 2018-05-21 13:46:14 |
| 10 | Title 9 | Body 9 |       1 | 2018-05-21 13:46:14 | 2018-05-21 13:46:14 |
+----+---------+--------+---------+---------------------+---------------------+
10 rows in set (0.00 sec)

mysql> 

结束语

这样一次简单的应用eloquent就完成了,本篇笔记就先到此结束吧~
用过原生php才知道有个框架是多么爽QAQ

评论

发送失败 可能是您的发言太频繁或联系方式有误

提交评论

Theme LightWhite Made by Archeb With
自豪地使用Typecho
© 2017 - 2020 elatis.cn 版权所有 ICP证: 冀ICP备18008017号-1
全站共 19.11 W 字
博客已经运行了