1、 路由
大多数的应用构建都是以routes/web.php文件定义的路由开始的。
以访问StudentController.php的index方法为例
<?php
namespace App\Http\Controllers;
use Illuminate\Http\Request;
class StudentController extends Controller
{
public function index($id=1){
return 'id为'.$id;
}
}
web路由配置
(1)基础路由
Route::get('/', function () {
return view('welcome');
});
//http://ip.com/laravel/public/index.php/test/post
Route::post('test/post',function(){
return '通过post访问';
});
(2)多请求路由
Route::any('student/any/{id}','StudentController@index');
//http://ip.com/laravel/public/index.php/multy1/4
Route::match(['get','post'],'multy1/{id?}','StudentController@index');
(3)路由带参
路由参数通常放在{}中,如果希望这个参数是可选的,就在参数后面加个?标记,前提是确保路由相应的变量有默认值
//id为必填,name可选
Route::get('user/{id}/{name?}',function($id,$name='im'){
return 'id-'.$id.'==name-'.$name;
});
(4)正则表达式约束
Route::get('user/{id}', function ($id) {
})->where('id', '[0-9]+');
Route::get('user/{id}/{name}', function ($id, $name) {
})->where(['id' => '[0-9]+', 'name' => '[a-z]+']);
(5)路由别名
路由别名:可以用as关键字或者name()指定别名,用route()利用别名生成别名对应的url地址
Route::get('student/index',['as'=>'stu',function(){
return route('stu');
}]);
Route::get('student/index',['as'=>'index','uses'=>'StudentController@index']);
Route::get('student/index', 'StudentController@index')->name('index');
//
public function index($id=1){
return route('index');
}
(6)路由群组
路由组允许你在大量路由之间共享路由属性,例如中间件或命名空间,而不需要为每个路由单独定义这些属性。共享属性应该以数组的形式传入 Route::group 方法的第一个参数中
// http://ip.com/my/test1 http://ip.com/my/test2
Route::group(['prefix'=>'my'],function(){
Route::get('test1',function(){
return 'test1';
});
Route::get('test2',function(){
return 'test2';
});
});
2、 控制器
<?php
namespace App\Http\Controllers;
use Illuminate\Http\Request;
class StudentController extends Controller
{
public function index(){
return 123;
}
}
路由与控制器关联2种方法
//方法1
Route::get('index',[
'uses'=>'StudentController@index',
'as'=>'test'
]);
//方法2
Route::get('index','StudentController@index');
3、视图
视图文件一般存放于 resources/views 目录下。
例:
(1)在resources/views/student 新建index.blade.php文件
我是{
{
$name}}
(2)控制器
<?php
namespace App\Http\Controllers;
use Illuminate\Http\Request;
class StudentController extends Controller
{
public function index(){
//方式1
//return view('student/index',['name'=>'im']);
//方式2
return view('student.index',['name'=>'im']);
}
}
(3)路由
Route::get('student/index','StudentController@index');
(4)访问
http://ip.com/laravel/public/index.php/student/index
4、模型关联
5、数据库
Laravel提供原生sql、查询构造器、Eloquent ORM 3种数据库操作方式
(1)原生sql
$student=DB::select('select * from students');//array()
$bool=DB::insert('insert into students(name,age) values(?,?)',['tom',23]);//bool(true)
$num=DB::update('update students set name=? where id=?',['ii',1]);//int(1)
$num=DB::delete('delete from students where id=?',[3]);//int(1)
(2)查询构造器
Laravel 的数据库查询构造器为创建和运行数据库查询提供了一个方便的接口。Laravel 的查询构造器使用 PDO 参数绑定来保护您的应用程序免受 SQL 注入攻击。
①增加
$bool= DB::table('students')->insert([
['name'=>'a','age'=>'20'],
['name'=>'b',