一、laravel基础
设置数据库编码, 更改数据库的编码为utf8mb4:*
修改mysql配置文件(Linux为my.cnf, windows为my.ini, my.cnf一般在etc/mysql/my.cnf位置)。
# 找到后在以下三部分里添加如下内容:  
[client]  
default-character-set = utf8mb4  
[mysql]  
default-character-set = utf8mb4  
[mysqld]  
character-set-client-handshake = FALSE  
character-set-server = utf8mb4  
collation-server = utf8mb4_unicode_ci  
init_connect='SET NAMES utf8mb4' 
mysql查询该表的所有列:
show columns from <table name>;
1. 路由和MVC
1. 核心目录
1
2
3
4
5
6
7
8
9
  | app:应用程序核心代码,自定义的业务逻辑,app->http->controller。
bootstrap:框架启动,自动加载
config:所有应用程序的配置
database:数据库迁移和填充
public:项目静态资源
resources:视图,resources->views。
storage:编译后的文件,storage->logs。
tests:单元测试目录,测试代码
vendor:依赖模块
  | 
2. 路由
- laravel的请求对应的是
路由。 - 请求类型get, post, put, patch, delete。
 - 多请求路由
 
1
2
3
4
5
6
  | Route::match(['get', 'post'], 'multy', function() {
    return 'multy';
}); // 相应指定请求类型的请求
Route::any('multy', function() {
    return 'multy';
}); // 响应所有类型请求
 | 
- 路由参数
 
1
2
3
4
5
6
7
8
9
10
11
12
  |    Route::get('user/{id}', function($id) {
       return 'User'.$id;
   }); // 参数一定要有
   Route::get('user/{name?}', function($name = null) {
       return 'User'.$name;
   }); // 可选参数,默认为null
   Route::get('user/{name?}', function($name = null) {
       return 'User'.$name;
   })->where('name', '[A-Za-z]+'); // 后面可以跟正则表达式验证这个参数
   Route::get('user/{id}/{name?}', function($id, $name = null) {
       return 'User'.$name.$id;
   })->where(['id' => '[0-9]+', 'name' => '[A-Za-z]+']); // 验证多参数
 | 
- 路由别名
 
1
2
3
4
5
  |    // 给路由给别名,这个别名可以在路由、控制器中用,另外如果以后想改url,有了别名,那么其他地方就不用改了
   Route::get('user/center', ['as' => 'center', function() {
       return 'center';
   }]); 
   // 如果以后我想改一下url,将'user/center'改成'men-user/center', 那么我就只改那里就行了,其他的地方因为用的都是路由别名,只要别名不改,那么其他地方也不用改
 | 
- 路由群组
 
1
2
3
4
5
6
7
8
9
  |    Route::group(['prefix' => 'member'], funciton() {
       Route::get('user/center', ['as' => 'center', function() {
       return 'center';
   }]); 
       Route::get('user/{id}/{name?}', function($id, $name = null) {
       return 'User'.$name.$id;
   })->where(['id' => '[0-9]+', 'name' => '[A-Za-z]+']);
   });
   // 将两个路由放到了一个路由群组里面,并且给两个路由加了一个前缀,访问member/user/center或者member/usr/3/才能真正访问到上面的两个路由,就是说给两个路由的url前加了'member/'
 | 
- 路由中输出视图
 
1
2
3
  |    Route::get('view', function() {
       return view('Hello!');
   });
 | 
3.控制器
项目中,路由只是来接受请求,然后转给控制器中的方法进行处理。
新建控制器
1
2
3
4
5
6
7
8
9
  |    // /App/Http/Controllers/MemberController.php
   <?php
   namespace App\Http\Controllers; // 写命名空间
   class MemberController extends Controller
   {
       public function info() {
           return 'member-info';
       }
   }
 | 
- 控制器与路由关联
 
1
2
3
4
5
6
7
8
9
10
11
12
13
  |    // 方法一
   Route::get('member/info', 'MemberController@info');
   // 方法二
   Route::get('member/info', ['uses' => 'MemberController@info']);
   // 起别名的路由
   Route::get('member/info', ['uses' => 'MemberController@info', 'as' => 'memberinfo']);
   // 控制器中:
   // class MemberController extends Controller
   // {
   //     public function info() {
   //         return route('memberinfo'); 
   //     } // 'memberinfo'是路由的别名,路由传进到控制器里面来了
   // }
 | 
- 关联控制器后,使用路由器
 
1
2
3
4
5
6
7
8
  |    // 参数绑定
   Route::get('member/{id}', ['uses' => 'MemberController@info']);
   // 控制器中:
   // class MemberController extends Controller
   // {
   //     public function info($id) {
   //         return $id; // 参数id传进去控制器里了
   // }
 | 
4. 视图(输出视图)
1
2
3
4
5
6
  | // APP/Http/HomeController.php
public function index()
{
return view('home');
}
// 在views中有home.blade.php。
 | 
1
2
3
4
5
6
  | // APP/Http/HomeController.php,这个是home控制器
public function index()
{
return view('home/index'); // 不要忘记加"home/"
}
// 那么就有views/home/index.blade.php,上面的home.blade.php中的模板内容被放在了views视图目录里的home文件里,变成了index.blade.php这个文件
 | 
1
2
3
4
5
6
7
8
  | // APP/Http/HomeController.php
public function index()
{
return view('home/index', [
'name' => 'Jim',
'age' => 18
]);
}
 | 
1
2
3
  | // 模板中获取变量
// views/home/index.blade.php
{{ $name }} {{ $age }}
 | 
5. 模型
- 新建模型
 
1
2
3
4
5
6
7
8
9
10
11
  |    // App/Aritcle.php,在App目录下新建模型的php文件
   <?php
   namespace App;
   use Illuminate\Database\Eloquent\Model;
   class Article extends Model
   {	// 这是一个静态方法,所以控制器里用Article::info();
       public static function info() 
       {
           return "this a article model."
       }
   }
 | 
- 使用模型
 
1
2
3
4
5
6
7
8
9
10
11
  |    // APP/Http/ArticleController.php,在控制器里使用模型
   <?php
   namespace App\Http\Controllers;
   use App\Article;
   use Illuminate\Http\Request;
   class ArticleController extends Controller
   {
       public function show(){
   		return Article::info();
       }
   }
 |