Laravel部署

title: Laravel
tags:

安装 WampServer

运行mysql,首先运行WampServer,然后在命令行输入

mysql -uroot -p

运行PHP自带的服务器时,

php -S localhost:8888

其默认的入口文件时index.php


PHP使用PDO连接数据库

try{
    $pdo=new PDO('mysql:host=127.0.0.1;dbname=mytry','root','');
}catch(PDOException $e){
    die('Could not connect to database');
}

完整demo

//index.php
<?php
try{
    $pdo=new PDO('mysql:host=127.0.0.1;dbname=mytry','root','');
}catch(PDOException $e){
    die('Error:'.$e->getMessage());
}

$statement=$pdo->prepare('select * from todos');

$statement->execute();

$tasks = $statement->fetchAll(PDO::FETCH_OBJ);

require "index.view.php";

//index.view.php
<!DOCTYPE html>
<html>
<head>
    <title>PHP</title>
</head>

<body>
    <ul>
        <?php foreach ($tasks as $task) : ?>
            <?php if($task->completed) : ?>
                <li>
                    <del><?= $task->description ?></del>
                </li>
            <?php else : ?>
                <li>
                    <?= $task->description ?>
                </li>
            <?php endif ; ?>
        <?php endforeach ; ?>
    </ul>
</body>
</html>

打开Warmserver

用localhost:8080

运行mysql图形化软件,打开

localhost:8080/phpmyadmin


学习路径

PHP基础教程

从零部署一个网站


安装laravel

在目标目录下:如2019download/Laravel中执行Composer命令

composer create-project laravel/laravel blog

上面的命令就是使用Composer的create-project命令创建一个新的项目,这个项目的名称就是blog,也就是我们会在Code/目录之下得到一个blog/文件夹,至于laravel/laravel也就是Laravel提供的包名称,如果你想知道Composer究竟有哪些包,你可以直接到这里来看看:

https://packagist.org/explore/

进入到项目的对应目录cd blog/,开启PHP服务器:

php -S localhost:8888 -t public

然后访问localhost:8888就可以看到Laravel的首页了:

php快捷键

设置中心:Ctrl+Shift+A

选择文件:Ctrl+E

查看文件中的类:Ctrl+F12

查找文件、类或方法等:Shift+Shift

快速生成代码:Alt+fn+Insert

快速创建文件:Alt+fn+home定位所需创建文件的目录,Alt+fn+Insert创建文件

代码重构:Alt+Ctrl+Shift+T

多点编辑(逐个选):Alt+J

多点编辑(全选):Alt+C


Laravel课程

Laravel5.5基础

1 目录结构讲解

routes:路由

resources:(blade模板引擎)视图定义存放在resources/views/中

2 目录设计原则

MVC原则

M-Model 模型

database目录当中

V-View 视图

resources目录中:assets放置未被处理的js,sass文件,lang是语言先关的字符串定义,views是视图

C-Controller 逻辑控制器

项目的所有业务逻辑,映射为的代码逻辑在app和routes目录

app业务处理逻辑

routes访问路由逻辑

工程项目便利性原则

routes文件经常修改,第一层更易定位

其他目录:

config目录放置配置相关文件

public目录是大家都能访问到的开放性目录

storage目录保存大量的缓存文件

bootstrap目录用于加速网站

vendor目录是不回去触碰它的目录

3 定义不同类型的路由

Route::get('book', function () {
    return '获取一本书';
});

Route::post('book', function () {
    return 'post一本书';
});

Route::put('book', function () {
    return '新增一本书';
});

Route::delete('book', function () {
    return '删除一本书';
});

Route::patch('book', function () {
    return '更新一本书';
});

4 路由的必选参数和可选参数

Route::get('book/{id}', function ($id) {
    return '获取一本书,他的id是'.$id;
})->where('id','[0-9]+');

Route::get('books/{name?}', function ($name='汉家故里') {
    return '获取一本书,书名是'.$name;
})->where('name','[a-zA-Z]+');

5 路由检查和路由群组

路由检查命令

php artisan route:list

路由群组

Route::prefix('user')->group(function (){
    Route::get('',function (){
       return '用户主页';
    });
   Route::get('email',function (){
       return '用户邮箱';
   }) ;
   Route::get('avatar',function (){
       return '用户头像';
   });
});

6 基础控制器创建

命令行

php artisan make:controller SiteController

web.php

Route::get('/','SiteController@index');

Route::get('/about', 'SiteController@about');

SiteController.php

class SiteController extends Controller
{
    //
    public function index(){
        return view('welcome');
    }

    public function about(){
        return view('about');
    }
}

7 资源控制器resource controller

命令:

php artisan make:controller UserController --resource

8 自带的用户脚手架系统

命令:

php artisan migrate

创建数据库的数据表

命令:

php artisan make:auth

创建用户系统

9 数据库版本控制数据迁移工具migration

版本回滚命令:

php artisan migrate:rollback --step=1

删除所有数据表:

php artisan migrate:reset

重新生成所有数据表:

php artisan migrate:refresh

创建一个migration文件:

 php artisan make:migration create_todolist_table --create=todolist

修改表结构:(注意不可直接在原表migration文件中更改)

php artisan make:migration add_master_into_todolist_table --table=todolist

10 Seeder方式向数据库填充数据

Seeder向数据库播种

命令:创建一个seeder

php artisan make:seeder UsersTableSeeder

命令:运行

php artisan db:seed

注:

所有表的创建和数据的写入:

php artisan migrate:refresh --seed

11 factory工厂生成批量测试数据

命令:

php artisan tinker
namespace App;
factory(User::class,500)->create()

若创建新的factory类

php artisan make:factory PostsFactory -m Post

12 Eloquent ORM 用面向对象的方式操作数据库

O-Object 对象

R-Relational关系

M-Mapping映射

Post Model 对应 posts数据表

对象与数据库数据之间的映射:

命令:

php artisan make:model Post -m

CRUD

C:Create 增加

$user =new User
$user->name='coding10'
$user->email='coding10@coding10.com'
$user->password=bcrypt('000000')
$user->role='others'
$user->save()

R:Retrieve 读取查询

User::where('role','=','wife')->get()

U:Update 更新

$user->name='coding100'
$user->save()

D:Delete 删除

$user->delete()

User::where('role','others')->delete()//批量删除

对象的关系反应数据项之间的关系:

返回id为2的所有文章

$user=User::find(2)
$user2->posts

13 简单博客系统搭建

网页链接中用有意义的命名代替id

public function getRouteKeyName(){
    return 'name';
}

报错处理

1071 Specified key was too long

【laravel5.6】 Illuminate\Database\QueryException : SQLSTATE42000]: Syntax error or access violation: 1071 Specified key was too long; max key length is 1000 bytes

参考博客

在进行数据迁移时候报错,特殊字段太长报错

解决方法:

在文件路径: /app/providers/AppServiceProvider.php,添加下述语句即可

<?php

namespace App\Providers;

use Illuminate\Support\ServiceProvider;
use Illuminate\Support\Facades\Schema;//添加

class AppServiceProvider extends ServiceProvider
{
    /**
     * Bootstrap any application services.
     *
     * @return void
     */
    public function boot()
    {
        //
        Schema::defaultStringLength(191);//添加
    }

    /**
     * Register any application services.
     *
     * @return void
     */
    public function register()
    {
        //
    }
}

Access denied for user 'homestead'@'localhost'

参考博客

注意:mysql中root用户默认为空,输入NULL

然后清理缓存重启服务

php artisan cache:clear
php artisan config:clear
php artisan serve

Migration: Cannot add foreign key constraint in laravel

参考网站

在本地migrate成功,但在服务器上失败,mysql版本一致,不懂呜呜呜

//原:
public function up()
{
    Schema::create('todolists', function (Blueprint $table) {
        $table->bigIncrements('id');
        ...
        $table->unsignedInteger('author_id');
        $table->foreign('author_id')->references('id')->on('users');
    });
}

//修改:
public function up()
{
    Schema::create('todolists', function (Blueprint $table) {
        $table->bigIncrements('id');
        ...
        $table->bigInteger('author_id')->unsigned();
        $table->foreign('author_id')->references('id')->on('users');
    });
}

网站开发流程

集成markdown编辑器

https://geixue.com/course/develop-a-forum-using-laravel-5/episodes/22

部署Lavarel到阿里云CentOs服务器:

  1. 安装LAMP环境https://lamp.sh/autoinstall.html
  2. 用git将lavarel项目拉去到服务器上,地址推荐为/var/www/
  3. 赋予/var/www权限:
    命令:`chmod 777 var/www -R
  4. 进入Apache安装目录:/user/local/apache
    更改其conf/vhost目录下的default.conf文件,将DocumentRoot和Directory路径改为/var/www/lovelife/public
    更改其conf目录下的httpd.conf文件,将DocumentRoot和Directory路径改为/var/www/lovelife/public
  5. 重启Apache,/etc/init.d/mysqld restart
全部评论

相关推荐

头像
01-12 14:44
已编辑
百度_高级研发工程师
今天看到了某平台攻击牛友的帖子,段段今天打算为牛友们说句话,我们的努力到底有没有意义。&nbsp;(原文复述:感觉牛客就是当年那群做题区毕业了开始找工作还收不住那股味,颇有一种从年级第一掉到年纪第二后抱怨考不上大学的区味)&nbsp;&nbsp;粗鄙,无礼,傲慢,攻击,在这里我没有看到任何有用的分析,我只看到了屁股决定脑袋的攻击,我只看到了嫉妒和眼红。一、去医院不看病你去逛街吗&nbsp;去医院你不去看病你去逛街吗?去加油站不加油你去抽烟吗?去部队你不训练战斗技能你去养老吗?来牛客你不努力求职你来干什么来了。&nbsp;牛客本身就是个求职平台,大家分享有用的知识,分享面经,分享offer,分享求职经验的,来牛客不就干这个来了吗?有什么问题吗?...
给个好点的工作吧啊啊...:不知道我看的是不是和博主同样的帖子,我记得原帖是表达的是有些匿名老是发几十万的offer侮辱价,然后就有牛友觉得凡尔赛了导致后面的评论有些偏激。我觉得这个最近闫学晶那个事情有点类似了,她说他儿子一年只能赚七八十万家庭生活都难以为继,不说普通家庭,多少大厂的程序员都赚不到这个数字,大部分家庭看到这种发言肯定会难受的一p,生活的担子又这么重,人都是需要发泄情绪的,互联网就是个极佳的载体,所以很多人直接就喷她了,人在情绪发泄的时候是不思考的,否则就不叫发泄了。然后还有一个点,段哥假定了这些喷的人全都是“躺平的”,这点可能有失偏颇,很多人一直在努力,但是始终缺乏天时地利人和的某一个条件,这点相信段哥找工作的过程中深有体会。绝大部分人都以结果的失败去否认了努力的全过程,可能只是别人努力的方向错了。就像一次面试,可能你准备了很久,结果面试官就是比较奇葩,一直问没有学习到的领域或知识点,然后有人凭一个挂掉的结果就直接给你扣了一个“躺平”的帽子,觉得挂掉是你不够努力,您心里滋味如何?再说点近点的,我也是od,多少同事深夜无偿加班,涨过一分工资吗?多少外包的技术大牛因为学历被困在外包,连od都进不去,这些人难道不努力吗?只是限制与生活、公司制度等等之类的无奈罢了。说到努力,又想到李家琦79元眉笔事件,这么多年有没有认真工作?有没有涨工资?他嘴里说出来是那么的理所当然,打工牛马都知道“任劳任怨”,“认真工作”真能涨工资?只干活不发声就等着被摘果子吧,企业里永远都是“汇报杰出者”升的最快(当然不是所有企业),这种事情相信段哥包括我甚至大部分od都经历过。最近辞职回老家,和老爸散步每次他都会感慨街上的蔬菜小贩多不容易,他们晚上就窝在那种三轮小货车的驾驶室里,腿都伸不直,我们这里晚上零下了,只盖一条薄毛毯,始终舍不得住我们镇上几十块的酒店,因为一车蔬菜就赚几百块顶多一千而且要卖好久,这样的例子还有太多了。这种芸芸众生可能辛苦了一天之后,打开手机看到网上的凡尔赛发言,跟风喷了几句发泄情绪,我觉得这种人不应该扣上“躺平”的帽子。我觉得大部分正常人都是努力的,或者曾经努力过,但世界上有太多努力解决不了的无奈了,甚至说你都没有那个努力的机会,不过正因如此,才显得坚持不懈的努力奋斗之人的难得可贵,认清生活的真相后仍然热爱生活,敢于直面现实的淋漓。
段段STEADY觉醒与突...
点赞 评论 收藏
分享
FOX2003:还没学后端框架吧,看你第一个项目用的mockjs。第一个项目太老而且可能是从github上扒的(我的课设就是这个),第二个主要依靠AI的能力,而且前端项目找前端实习的话,留个github地址好点,主要还是前端要求越来越高了。另外,去***看看,符合就投,boss投的多,HR工作量就大,没功夫多聊
点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

更多
牛客网
牛客网在线编程
牛客网题解
牛客企业服务