windows 学习laravel(一)

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/backkom_jiu/article/details/79655048

以前工作主要使用tp,现在想接触一下laravel,因此根据网上的资料以及自身实践写出如下记录,适合初学者

1、参考文档

Laravel 5.5 中文文档:https://d.laravel-china.org/docs/5.5
参考的博客:https://github.com/johnlui/Learn-Laravel-5/issues/16

2、环境要求

环境要求:PHP 7.0+,MySQL 5.1+

3、安装、运行

3.1 安装

进入你设定的虚拟站点或者www目录

composer create-project laravel/laravel learnlaravel5

3.2 运行

  • php内置服务器
    进入laravel项目public文件夹下
cd learnlaravel5/public
php -S 0.0.0.0:1024

-wamp 启动

http://www.test001.com/Laravel/learnlaravel5/public/

访问:
虚拟站点访问

php内置web服务访问

4、 体验 Auth 系统

Laravel 利用 PHP5.4 的新特性 trait 内置了非常完善好用的简单用户登录注册功能,适合一些不需要复杂用户权限管理的系统,例如公司内部用的简单管理系统。

激活这个功能非常容易,运行以下命令:

php artisan make:auth

访问 http://*/login,

5. 连接数据库

a. 修改配置

不出意外的话,learnlaravel5 目录下已经有了一个 .env 文件,如果没有,可以复制一份 .env.example 文件重命名成 .env,修改下面几行的值:

DB_HOST=127.0.0.1
DB_PORT=3306
DB_DATABASE=laravel5
DB_USERNAME=root
DB_PASSWORD=password

推荐新建一个名为 laravel5 的数据库(编码设置为 utf8mb4),并且使用 root 账户直接操作,降低学习数据库的成本。

users 表不存在,接下来我们将见识 Laravel 另外一个实用特性。

b. 进行数据库迁移(migration)

运行命令:

php artisan migrate

我们得到了如下结果:

» php artisan migrate
Migration table created successfully.
Migrating: 2014_10_12_000000_create_users_table
Migrated:  2014_10_12_000000_create_users_table
Migrating: 2014_10_12_100000_create_password_resets_table
Migrated:  2014_10_12_100000_create_password_resets_table

数据库迁移成功!赶快打开 http://xxx/home 点击右上角的注册按钮注册一个用户试试吧~

c. migration 是啥?

learnlaravel5/database/migrations/2014_10_12_000000_create_users_table.php文件,你肯定能一眼看出它的作用:用 PHP 描述数据库构造,并且使用命令行一次性部署所有数据库结构。

6. Eloquent

Eloquent 是 Laravel 的 ORM,是 Laravel 系统中最强大的地方,没有之一。当初 Laravel 作者在开发第一版的时候花了整整三分之一的时间才搞出来 Eloquent。当然,“欲练此功,必先自宫”,Eloquent 也是 Laravel 中最慢的地方,迄今无法解决。(路由、自动载入、配置分散、视图引发的性能问题都通过缓存几乎彻底解决了,Composer Autoload 巨量的性能消耗也被 PHP7 手起刀落解决了)

a. Eloquent 是什么

Eloquent 是 Laravel 内置的 ORM 系统,我们的 Model 类将继承自 Eloquent 提供的 Model 类,然后,就天生具备了数十个异常强大的函数,从此想干啥事儿都是一行代码就搞定。

时刻谨记:代码是写给人看的,只是恰好能运行。

b. 怎么用?

我们使用 Artisan 工具新建 Model 类及其附属的 Migration 和 Seeder(数据填充)类。

运行以下命令:

php artisan make:model Article

去看看你的 app 目录,下面是不是多了一个 Article.php 文件?那就是 Artisan 帮我们生成的 Model 文件:

<?php

namespace App;

use Illuminate\Database\Eloquent\Model;

class Article extends Model
{
    //
}

细思极恐

7. 使用 Migration 和 Seeder

接下来我们生成对应 Article 这个 Model 的 Migration 和 Seeder。

a. 使用 artisan 生成 Migration

在 learnlaravel5 目录下运行命令:
php artisan make:migration create_articles_table
成功之后打开 learnlaravel5/database/migrations,你会发现有一个名为 2*****_create_articles_table 的文件被创建了。我们修改他的 up 函数为:

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

这几行代码描述的是 Article 对应的数据库中那张表的结构。Laravel Model 默认的表名是这个英文单词的复数形式,在这里,就是 articles。接下来让我们把 PHP 代码变成真实的 MySQL 中的数据表,运行命令:
php artisan migrate
执行成功后,articles 表已经出现在数据库里了:

b. 使用 artisan 生成 Seeder

Seeder 是我们接触到的一个新概念,字面意思为播种机。Seeder 解决的是我们在开发 web 应用的时候,需要手动向数据库中填入假数据的繁琐低效问题。

运行以下命令创建 Seeder 文件:
php artisan make:seeder ArticleSeeder
我们会发现 learnlaravel5/database/seeds 里多了一个文件 ArticleSeeder.php,修改此文件中的 run 函数为:

public function run()
{
    DB::table('articles')->delete();

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

接下来我们把 ArticleSeeder 注册到系统内。修改 learnlaravel5/database/seeds/DatabaseSeeder.php 中的 run 函数为:

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

由于 database 目录没有像 app 目录那样被 composer 注册为 psr-4 自动加载,采用的是 psr-0 classmap 方式,所以我们还需要运行以下命令把 ArticleSeeder.php 加入自动加载系统,避免找不到类的错误:
composer dump-autoload
然后执行 seed:
php artisan db:seed
你应该得到如下结果:

» php artisan db:seed
Seeding: ArticleSeeder

示例:

E:\test001\Laravel\learnlaravel5>php artisan migrate
Migration table created successfully.
Migrating: 2014_10_12_000000_create_users_table
Migrated:  2014_10_12_000000_create_users_table
Migrating: 2014_10_12_100000_create_password_resets_table
Migrated:  2014_10_12_100000_create_password_resets_table
Migrating: 2018_03_22_062916_create_articles_table
Migrated:  2018_03_22_062916_create_articles_table

E:\test001\Laravel\learnlaravel5>php artisan make:seeder ArticleSeeder
Seeder created successfully.

E:\test001\Laravel\learnlaravel5>composer dump-autoload
Generating optimized autoload files
> Illuminate\Foundation\ComposerScripts::postAutoloadDump
> @php artisan package:discover
Discovered Package: fideloper/proxy
Discovered Package: laravel/tinker
Discovered Package: nunomaduro/collision
Package manifest generated successfully.

E:\test001\Laravel\learnlaravel5>php artisan db:seed
Seeding: ArticleSeeder

这时候刷新一下数据库中的 articles 表,会发现已经被插入了 10 行假数据:
数据填充

8、常见错误及解决

问题一

Laravel 5.4: Specified key was too long error
解决方法:

# a.升级mysql到>5.77
# b.修改向导文件AppServiceProvider.php 
use Illuminate\Support\Facades\Schema;

public function boot()
{
    Schema::defaultStringLength(191);
}

问题二

Base table or view already exists: 1050 Table ‘users’ already exists”

这和magento本身的机制有关,magento会自己检查模块的版本如果有发现版本号变化就会执行模块对应的data目录下的sql文件

解决方法:

# 直接在phpadmin或navicat中使用sql语句删除掉提示中出现的表,最好做个备份

猜你喜欢

转载自blog.csdn.net/backkom_jiu/article/details/79655048