Laravel5.2.45初级系列教程(1)

1、安装composer和Laravel:

安装composer和laravel,下面这个链接讲的比较详细,直接列出来参考即可。
http://blog.csdn.net/zhezhebie/article/details/68947385

#2、Laravel目录结构:
安装好了以上两个东东,就需要来看一下laravel的目录结构,不然都不知道MVC分别在哪里,不是开玩笑,laravel和一般的框架还真有点不一样。
http://blog.csdn.net/zhezhebie/article/details/70599050

3、基本配置:

Laravel 框架的所有配置文件都存放在 config 目录下,并且每一个配置项都有注释,所以你可以随意浏览任意配置文件去熟悉这些配置项。

1)、目录权限

安装完 Laravel 后,需要配置一些目录的读写权限:storage 和 bootstrap/cache 目录必须是可写的,windows下面不需要设置。

2)、应用 Key

按照我说的用composer安装laravel项目,此步骤可以跳过。如果你想要手动生成该 key 的值,使用如下 Artisan 命令即可:会在.env文件中自动生成密钥。

php artisan key:generate

3)、重要的基本配置:

官方文档基本上是一笔带过,啥也没说,但这里的配置是非常重要的:
文件地址:D:\wamp64\www\laravel5.2\blog.env
运行模式选择:

APP_ENV=local

debug模式开启:

APP_DEBUG=true

数据库的设置:
(在app.php里面也可以设置,不过现在大家都用git,上传的时候有可能有安全隐患,写在.env文件里面比较好,因为这个文件不会被上传)

DB_CONNECTION=mysql
DB_HOST=127.0.0.1
DB_PORT=3306
DB_DATABASE=数据库名称
DB_USERNAME=root
DB_PASSWORD=直接写你的密码

4)、到这里是不是有点晕了,怎么有两个配置文件???

我一开始也纳闷,后来查了些资料,探索了一下,就发现了。.env是主配置文件,这里面如果有值的话,就取这里面的值,如果没有值的话就用app.php里面的默认值。例子如下:
‘env’ => env(‘APP_ENV’, ‘production’),
官方的说明:当前应用环境由 .env 文件中的 APP_ENV 变量决定,你可以通过 App 门面 的 environment 方法来访问其值:
$environment = App::environment();
好了,清楚明白了吧?这样做的好处是可以方便的切换环境。官方说明是:不要把 .env 文件提交到源码控制(svn 或 git 等)中,因为每个使用你的应用的开发者/服务器可能要求不同的环境配置。如果你是在一个团队中进行开发,你需要将 .env.example 文件随你的应用一起提交到源码控制中:将一些配置值以占位符的方式放置在 .env.example 文件中,这样其他开发者就会很清楚运行你的应用需要配置哪些环境变量。

5)、配置缓存

为了给应用加速,你可以使用 Artisan 命令 config:cache 将所有配置文件的配置缓存到单个文件里,这将会将所有配置选项合并到单个文件从而可以被框架快速加载。应用一旦上线,就要运行一次

php artisan config:cache

,但是在本地开发时,没必要经常运行该命令,因为配置值经常需要改变。

6)、维护模式,就是说网站下线或者你想要所有页面都展示同一个页面的时候才会用到:

当你的应用处于维护模式时,所有对应用的请求都会返回同一个自定义视图。这一机制在对应用进行升级或者维护时,使得“关闭”站点变得轻而易举。对维护模式的判断代码位于应用默认的中间件栈中,如果应用处于维护模式,则状态码为 503 的 HttpException 将会被抛出。
要开启维护模式,只需执行 Artisan 命令 down 即可:

php artisan down

要关闭维护模式,对应的 Artisan 命令是 up:

php artisan up

维护模式响应模板:
默认的维护模式响应模板是 resources/views/errors/503.blade.php

好了,到这里基本就所有的配置都搞好了!下面正式进入主题:

官方的文档安排让人很晕,因为不是按照了解这个框架的顺序来的。我写的这个就完全是按照我们思维习惯来走的,符合人类习惯。

4、创建控制器:

当然,你可以手动创建,但是我不建议,因为代码还是挺多的,而且不一定写的出来。直接用artisan命令。

php artisan make:controller ArticleController --resource

经常使用的命令我已经在这里列好了,直接来参考即可!飞一般的感觉!

http://blog.csdn.net/zhezhebie/article/details/70646129

运行完上述命令,对应的会在app/http/controllers下面生成ArticleController.php这个控制器。还有index,show,update等等常用的方法。laravel帮我们做了蛮多事情,到这里还没完。

接着我们在index方法里面写点东西,看看控制器是怎么调用视图的,先不连接数据库。只看看逻辑有没有问题。

public function index() {
  $article='好牛逼的赶脚';
  return view('Articles.articles', compact('articles'));
}

对的,视图就是这样被调用的,return view 即可,Articles.articles 这个意思就是调用 D:\wamp64\www\laravel5.2\blog\resources\views\articles\articles.blade.php 这个文件,我直接把我的完整路径贴出来。
说白了就是调用articles文件夹下面的名字叫 articles 的模板。后面就是传的参数,为什么用compact,这个函数很有用处,可以打包!把一堆结果传递到下一个页面。

5、模板渲染:

接着,就到了模板渲染程序了,模板是怎么接收参数的呢?
直接上例子:


@extends('layouts.app')
{{ $article }}
@section('content')
@stop

对的,就是这么简单!这样就调用了!我去浏览器访问一下,额?怎么报错了?
#6、路由设置:
因为还有最重要的一步我们还没做,那就是见一个路由器,就像下面这样:

Route::get('/articles', 'ArticleController@index');

这个路由的意思就是,当我们在浏览器输入譬如说 myblog.com/articles的时候,Laravel会自动帮我们定位到ArticleController里面的index方法!那个@是不是特别有意思,就像发微信以下,我@一下你,然后你就来了!注意:myblog.com是我定义的虚拟机的别名。上面的教程有写,新手千万不要跳着看,不然会晕,我都是看别人的半截教程一路坑过来的!最全面的就是官方手册,但是第一次直接进去看,肯定会蒙圈,那都是写给有一些基础看的。。。
那我们是不是每访问一个页面都要写一个路由呢?呵呵,理论上是的!实际上,你懂的。但是你去看别人的教程,他肯定写一个页面就来一个。。。这样光写路由就能够把你写死。还记得那个–resource吧?这里,我们又要用了!发车了,赶紧跟上 !!!

Route::resource('articles', 'ArticleController');

然后我们再运行:

php artisan route:list 

看看,呵呵,是不是多了一堆路由!什么增删改查全都注册好了!路由的强大体现在很多方面,作为入门的教程先讲到这里,等你看完这个教程,再看研究官方文档,肯定会轻松很多,信平哥,少干活!
好了,我们再去访问一下 myblog.com/articles ,是不是就出来了感觉很牛逼的赶脚这几个大字!
到这里,我们的等级又高了一层,但是这还远远不够。好了,我们继续开车,到这里我们应该做什么了?那还用说,肯定是链接数据库了,我用的是mysql,就以mysql为例。
下面我们就来创建数据库,需要到navicat 或者装逼的mysql命令行或者phpMyAdmin操作吗?这还不简单,有的同学看到这里就去苦逼的建数据库了。
又要开车了,抓紧了。

7、数据库迁移:

php artisan make:migration create_article_table --create=article

–create选项可以用于指定表名。运行完了,看看以下路径是不是有了这个新文件。

D:\wamp64\www\laravel5.2\blog\database\migrations\2017_04_01_195611_create_article_table.php

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

精华在这里!这就是我们的表结构,看意思应该就知道是啥意思了吧?这里重点说一下,up和down,还有 timestamps 。
到这里,好像还没有建立数据表呢?别急,再来个命令,

php artisan migrate

再去数据库看看,是不是多了个articles表,上面的字段都有,也能看懂,但是最后两个字段有点迷糊额
created_at 和 updated_at 这两个怎么来的?简单地说就是Laravel帮我们建立的,而且很高级,后面你会感觉到无穷的好处!真的吗?平哥,不带忽悠我哈!我是一个实事求是的人,虽然有时候会有那么一丢丢小夸张。但这个确实是真的。
字面意思就是创建和修改,对的,你数据库不就增删改查搞来搞去吗?增的时候要个时间,改的时候也要个时间,我直接都帮你们建好得了!秘密是:你创建数据和修改数据的时候,不用理会时间,把你的聪明才智运用在逻辑上面和把妹上面就对了!不信?那就继续扶好了,我要带你们上天。
那个up是创建数据表的意思,down是啥?下来?呵呵,是回来的意思哈!撤销创建。看里面的代码就知道啦。大写的 drop ,虽然英语不好,但是这个单词还是认识的。对的,为什么要这样呢?这个是为了方便大家团队开发,你想想,我一个人把数据库都弄成这样的文件,你拿去一运行,所有的表格都建好了,直接专注开发,是不是爽爆了?别急,这个只是个空表格,我们还要往里面填充数据呢!

在D:\wamp64\www\laravel5.2\blog\database\seeds\下新建

ArticleTableSeeder.php

文件,内容如下:


<?php

use Illuminate\Database\Seeder;
use App\Article;

class ArticleTableSeeder extends Seeder {

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

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

然后修改同一级目录下的

DatabaseSeeder.php

中添加:

$this->call('ArticleTableSeeder');

然后运行命令进行数据填充:

composer dump-autoload 

php artisan db:seed

去看看 articles 表,是不是多了100行数据?

到这里,我们数据库也创建好了,接着就是从数据库取数据,展示到前台页面了。这里我们介绍使用Eloquent ORM
创建模型实例最简单的办法就是使用 Artisan 命令make:model,我感觉这也是最好的办法。

php artisan make:model Article

这个条命令不会生成数据库迁移

php artisan make:model Article --migration

等同于 :

php artisan make:model Article --m 

意思是在生成模型的时候同时生成数据库迁移。
模型默认位于app目录下。

#8、Elequent ORM 数据库操作:
表名:
注意我们并没有告诉 Eloquent 我们的Article模型使用哪张表。默认规则是模型类名的复数作为与其对应的表名,除非在模型类中明确指定了其它名称。所以,在本例中,Eloquent 认为Article模型存储记录在articles表中。你也可以在模型中定义table属性来指定自定义的表名:

<?php

namespace App;

use Illuminate\Database\Eloquent\Model;

class Article extends Model{
    /**
     * 关联到模型的数据表
     *
     * @var string
     */
    protected $table = 'my_articles';
}

主键:
Eloquent 默认每张表的主键名为id,你可以在模型类中定义一个$primaryKey属性来覆盖该约定。

public $primaryKey = 'id';

时间戳:
默认情况下,Eloquent 期望created_at和updated_at已经存在于数据表中,如果你不想要这些 Laravel 自动管理的列,在模型类中设置$timestamps属性为false:

public $timestamps = false;

如果你需要自定义时间戳格式,设置模型中的$dateFormat属性。该属性决定日期被如何存储到数据库中,以及模型被序列化为数组或 JSON 时日期的格式:这里没有深入研究,我认为这个够用了,尤其是以后按月按年筛选数据尤其有用!不过效率最高的还是int类型,筛选的时候给出一个时间段即可。例如:

$start=strtotime(date('2017-01-01 00:00:00'));$end=strtotime(date('2017-02-01 00:00:00')),

筛选就很快。

protected $dateFormat = 'U';

1、数据库连接:

默认情况下,所有的 Eloquent 模型使用应用配置中的默认数据库连接,如果你想要为模型指定不同的连接,可以通过 $connection 属性来设置: protected $connection = ‘connection-name’;

1、配置.env文件


DB_CONNECTION=mysql
DB_HOST=127.0.0.1
DB_PORT=3306
DB_DATABASE=database_name
DB_USERNAME=root
DB_PASSWORD=


DB_HOST_CENTER=127.0.0.1
DB_PORT_CENTER=3306
DB_DATABASE_CENTER=database_center
DB_USERNAME_CENTER=root
DB_PASSWORD_CENTER=

2、配置config/database.php


'mysql' => [
            'driver' => 'mysql',
            'host' => env('DB_HOST', 'localhost'),
            'port' => env('DB_PORT', '3306'),
            'database' => env('DB_DATABASE', 'forge'),
            'username' => env('DB_USERNAME', 'forge'),
            'password' => env('DB_PASSWORD', ''),
            'charset' => 'utf8',
            'collation' => 'utf8_unicode_ci',
            'prefix' => '',
            'strict' => false,
            'engine' => null,
        ],
'mysql_center' => [
    'driver' => 'mysql',
    'host' => env('DB_HOST_CENTER', 'localhost'),
    'port' => env('DB_PORT_CENTER', '3306'),
    'database' => env('DB_DATABASE_CENTER', 'forge'),
    'username' => env('DB_USERNAME_CENTER', 'forge'),
    'password' => env('DB_PASSWORD_CENTER', ''),
    'charset' => 'utf8',
    'collation' => 'utf8_unicode_ci',
    'prefix' => '',
    'strict' => false,
    'engine' => null,
],

3、创建model
// 这个model将采用默认的’mysql’连接


class UserModel extends Model
{
    // 数据库'database'中的users表
    protected $table = "users";
}

// 这个model将使用mysql_center连接

class UserModel extends Model
{
  // 数据库'dadtabase_center'中的users表
    protected $connection = 'mysql_center';
    protected $table = "users";

}

是不是非常人性化?随意切换数据库,切换数据表。

未完待续。

问题查询网站:

Laracasts Forums
Laravel.io Forums
Discord
Larachat
IRC
StackOverflow

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

SHUIPING_YANG

你的鼓励是我创作的最大动力。

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值