Home laravel自学
Post
Cancel

laravel自学

2018-09-16: 感觉docker是更好的选择,找机会实验一下。


7/30

[推荐]使用Mac安装virtualbox+homestead配置laravel环境

注:(一开始没注意到,虽然没有尝试过,但是目前感觉这个更适用)Valet只支持Mac,并且要求本地安装了PHP和数据库服务器,这可以通过使用Homebrew命令轻松实现

核心思想:在virtualbox里运行homestead虚拟机,并且使得虚拟机和主机共享一个文件夹,把laravel安装在这个文件夹里,使得配置和运行时在虚拟机里操作这个文件夹,在本机使用编辑器操作laravel里的文件。

  1. 安装homestead
  2. 用户名/密码:vagrant/vagrant

  3. vagrant命令

vagrant和homestead的理解:vagrant是一个管理虚拟机的工具。对于Mac的laravel/homestead官方文档来说,首先在根目录下安装homestead,相当于有一个总的虚拟机。每次新建项目时,现在总的虚拟机里对应文件夹下(如~/Code)新建laravel项目,然后composer require laravel/homestead –dev安装分别的虚拟机,实现每个项目单独一个环境。之后修改homestead.yaml文件以及hosts文件,完成整个新建项目的任务。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
	1. 找到根目录下的homestead,vagrant up启动虚拟机。
	2. 在Code文件夹下laravel new blog新建一个项目
	3. composer require laravel/homestead --dev 安装项目自己的homestead
	4. 实现每个项目有单独的虚拟机启动 --------

* vagrant up	[vm-name]	启动单虚拟机[特定虚拟机]
* vagrant box add [box-name]	增加镜像
* vagrant box remove [box-name]	删除镜像
* vagrant reload	重启
* vagrant halt	关闭
* vagrant destroy	销毁
* vagrant snapshot save shot1	快照
* vagrant reload --provision 修改Homestead.yaml后重启并读取配置文件
* 给每个项目安装不同的 Homestead 配置文件,直接安装至项目中*(每个项目分别有一个homestead)*
	* 新建项目: laravel new app 
	* app路径下,虚拟机输入命令:composer require laravel/homestead --dev 
	* 虚拟机:php vendor/bin/homestead make
	* /etc/hosts文件增加对应的IP地址和路由
	* 转换项目则在总的Homestead文件夹里homestead.yaml配置文件修改ip地址为对应的ip地址
	* 重启虚拟机:vagrant reload --provision
* mysql端口、用户名密码:3306(33060)/homestead/secret
	* *注意:root用户的密码也是secret*
* SSH: 2222 → Forwards To 22
* HTTP: 8000 → Forwards To 80
* HTTPS: 44300 → Forwards To 443
* MySQL: 33060 → Forwards To 3306
* Postgres: 54320 → Forwards To 5432 
  1. nginx使用 nginx应该是安装在homestead虚拟机里的,本机不需要安装。

    • 查看是否启动: ps -ef|grep nginx
    • 查看端口占有情况:netstat -ntpl
    • 查看laravel版本(laravel文件目录下):php artisan –version
  2. 正常操作

    • vagrant up
    • vagrant ssh
    • vagrant halt
    • 生成auth模块:php artisan make:auth

7/31

  1. 新建laravel项目 composer 或者 laravel new blog
  2. 启动laravel服务器:php artisan serve
  3. laravel文件夹结构

    • routes:路由情况
    • resources/views:界面
  4. 技巧

    • sublime:cmd+P–rweb->routes/web.php
    • 一键建立表:php artisan migrate

8/1

  1. composer dumpautoload 优化自动加载、提高效率
  2. RESTFUL

    • create => post
    • read => get
    • update => put/patch
    • delete => delete
  3. 新建restful对象:php artisan make:controller UsersController
  4. php artisan list make

疑惑

  1. composer create-project和laravel new的区别
  2. 在不同的项目里分别安装homestead,遇到部分配置按照总Homestead的,部分是独自的Homestead配置的情况,不太理解。
  3. [已解决]php artisan miagre:refresh报错table exist;mysql数据库的migration表中没有对应新建的create_xxx_table项。不执行对应操作

8/2

  1. 新建项目:
    • laravel new app
    • laravel new blog –dev(获取dev版)
    • composer create-project –prefer-dist laravel/laravel blog
    • rm -rf app (删除项目)
  2. routes文件夹:web.php存储路径
  3. 新建mysql用户(权限似乎有点问题,无法修改mysql.user表)
    • create database blog;
    • grant all privileges on . to root@’%’ identified by ‘’;
    • insert into user(Host,User,authentication_string) values(‘localhost’,’root’,password(‘’));
    • grant usage on . to ‘root’@’%’ identified by ‘’ with grant option;
  4. php artisan migrate将数据库的表格转移到新的数据库中
  5. 给予新的URI参数web.php:

    1
    2
    3
    4
    5
    
     Route::get('/', function () {
         return view('welcome', [
             'name' => 'world'  #return view('welcome')->with('name', 'worlld!');功能一致
         ]);
     });
    
  6. blade文件中可以直接使用@而不是<?php ?>在html中插入PHP代码

    1
    2
    3
    4
    5
    
     <ul>
         @foreach ($tasks as $task)
         <li>\{\{\$task\}\}</li>
         @endforeach
     </ul>
    
  7. 新建数据库表 php artisan查看所有指令

    • php artisan make:migration create_tasks_table #新建在/database/migrations
    • 修改生成的文件,使得数据库的表的要求适合自己的项目。注意要设置主键,或者用自带的id作为主键。
    • 若删除了文件,可以使用composer dumpautoload重新配置,再使用第一步的命令继续。
    • 编辑完输入php artisan migrate实现把命令对应到数据库中。
    • 如果写错了 使用php artisan migrate:refresh回滚重新配置。
    • mysql使用当前时间 \func now(),之间输入now()报错。
    • dd($id) dying dump 终止并输出;
    • print_r()
    • var_dump();die();
  8. //删除文件夹下的所有 .git 文件 find . -name ".git" | xargs rm -Rf

  9. mysql5.7.19新建用户
  • create user ‘test’@’%’ identified by ‘password’; #新建用户
  • grant all on test.* to ‘test’@’%’; #获得权利
  • Delete FROM user Where User=’test’ and Host=’localhost’; #删除用户
  • flush privileges;

8/3

  1. 新建类:php artisan make:model Student
  2. php artisan tinker 用来交互检查指令搜索数据库内容的测试shell
* App\Task::all() == DB::table(‘students’)->get(); * App\Task::where(‘id’,’>’,’3’)->get(); * App\Task::pluck(‘body’); * 注意namespace的使用

8/4

  1. seeder自动填充数据到mysql数据库

    • php artisan make:seeder StudentTableSeeder #新建文件在databases/seeds/路径下
    • composer dumpautoload
    • 修改StudentTableSeeder文件

      1
      2
      3
      4
      5
      6
      7
      8
      9
      10
      
          for ($i=0; $i < 10; $i++) {
            DB::table('students')->insert([
                // 'title'   => 'Title '.$i,
                // 'slug'    => 'first-page',
                // 'body'    => 'Body '.$i,
                // 'user_id' => 1,
                'student_id' => 'studnet'.$i,
                'student_name' => 'student_name'.$i,
                'class' => 'class'.$i,
            ]);
      
    • php artisan db:seed
  2. 设置api路径,访问时为IP/api/info

    1
    2
    3
    4
    
     Route::get('info',function () {
         $students = DB::table('students')->get();
         return $students;
     });
    
  3. 遇到Vue通过axios访问laravel时Access-Control-Allow-Origin的问题,通过在后端增加插件laravel-cors解决(此问题针对laravel5.5版本)。具体问题可以深究一下。

9/11

  1. 注意修改阿里云控制台的安全组,让外网可以请求服务器。
  2. 完成ballot项目,配置服务器遇到问题。根据教程遇到问题502 NO Gateway。研究出新的方法:在ubunut中若服务器遇到问题,查看/var/log/nginx/error.log,看到具体报错问题。这次是/etc/nginx/sites-available/default配置文件中的fastcgi://unix:/var/run/php7.1-fpm.sock:位置错误,修改为fastcgi://unix:/var/run/php/php7.1-fpm.sock:解决问题。
  3. If a new extension is needed to be used, do not forget to add the path in /config/app.php.
  4. Use a laravel extension to optimize the picture
  5. Minimize the font package size, Using the tools
This post is licensed under CC BY 4.0 by the author.

CSS知识补充

阿里云ubuntu配置FTP服务器