之前因为环境和时间因素,买了书后没有看,乘着这次出差花点时间按教程做了一遍,学到了不少东西。下面我就按着目录,总结一下我学到了哪些东西。

ps:下面的内容是根据我对于教程的理解,有感而发写出的一些使用感受和心得,不会对其中某项名词进行解释,如有不了解的地方建议到Laravel China 社区 提问或者购买教程了解详细介绍。


1. 第一次使用虚拟机开发项目

本项目用了virtualBox + vagrant + Homestead 搭建一套虚拟机环境进行项目开发,之前我一直没有做这个教程的原因也是因为,这个环境的搭建一直有些许报错,我看了教程下面的回复不少人也遇到过稀奇古怪的问题,我在我的外星人win10和公司win7上始终搭建不起来,到了厦门以后,公司配了全新的电脑,再加上教程也有了更新,终于让我能完整搭建环境了。

以往开发php项目,都是用lampp,xampp,自配php+mysql+apache的方式,代码和测试服务器都在一台主机上,想怎么改配置就怎么改配置。现在用了虚拟机开发项目,我认识到的好处就是,保证在多人项目中每个人的开发环境是一模一样的。每个人的电脑可能不同,系统可能不同,甚至在电脑里如果之前已经装过某些环境,进行过某些配置,那么开发起来一出错就要花大量时间找原因,在虚拟机内架设环境则就不会有这问题,因为都是干净的系统,同样的配置文件。另外,Laravel提供的Homestead,为我们准备几乎所有会需要用到的软件,服务器,拓展,一步到位,不需要自己再去找再去装,太方便了。

对于虚拟机和Homestead的配置我还在刚开始学习阶段,希望今后能更熟悉的使用这些东西,对于项目开发更加规范化。

2. 数据库操作

三大关键字 迁移 填充 关联 。在了解这三项后,都为我以后的代码开发节省不少时间。

  • 以往我们建表都是在数据库管理工具里手动建或者用.sql,这样每次都要修改表都要修改.sql脚本,然后用程序运行它,相比之下,迁移有以下几个好处:

    • 多人并行开发;
    • 代码版本管理;
    • 数据库版本控制 —— 如:回滚/重置/更新等;
    • 兼容多种数据库系统( MySQL, PostgreSQL, SQLite ,Oracle);
    • 部署方便。

Laravel生成的迁移文件就在项目里,可供团队成员配置和修改,完成表的重建,加字段,包括后面讲的数据填充,都能一步完成。

  • 填充功能,则是项目测试必不可少的一项便捷操作。在这以前我没有一个测试系统或者写过测试代码来测试我的项目,基本都是处于手动输入数据的原始阶段。Laravel框架提供的seed让我学会批量填充测试数据到数据表中,省了不少力气。
  • 模型间的关联,则是我在看过教程后才彻底掌握的东西。以前对于关联的概念还太模糊,以为只要在字段上进行关联,就能查出数据,但实际上模型间进行关联,也能为我省下不少代码量,以前通过外键查找相应数据,还在控制器里引用两个模型,实在太愚蠢了。

比如以前想找一个用户的所有文章和某篇文章的作者,我都是这样:

$user = User::find(1);
$article = Article::where("user_id",$user->id)-get();
    
$article = Article::find(1);
$user = User::where("id",$article->user_id)->get();

现在只要在User模型中定义

public function articles()
{
    return $this->hasMany(Article::class);
}

以及在Article模型中定义

public function user()
{
    return $this->belongsTo(User::class);
}

即可使用下列代码找出用户的所有文章和某篇文章的作者

$article = User::find(1)->articles;
$user = Article::find(1)->user;

这只是简单的一对多关系,Laravel为我们提供的更多模型关联为我们带来了许多便利。

3. 其他心得

其他还让我长了见识并且提供便利的地方还在于Laravel提供的Auth用户认证、中间件、授权策略、Sass,了解这些将极大的增强项目的安全性和方便性。Laravel 5.5文档也详细的介绍了使用方法。

接下来我会继续阅读 Laravel 教程 - Web 开发实战进阶 ( Laravel 5.5 ) ,写出更优雅的代码 (☆ω☆)

Last modification:May 28, 2018
If you think my article is useful to you, please feel free to appreciate