composer={
#安装建表工具
composer create-project --prefer-dist laravel/lumen blog
#composer
在项目的根目录,写composer.json文件
{ "require":{ "psr/log":"1.0.0" } }
{ "require":{ "厂商/类库":"版本" } }
#执行composer install
#会自动去加载,并产生一个verdor目录
如何加载这么多类
# Composer 生成了一个 vendor/autoload.php 文件. 你可以简单的引入这个文件,你会得到完善的自动加载支持.
如果你想使用类,在php先引入这个 vendor/autoload.php 文件.
require(__DIR__ . '/vendor/autoload.php');
use Psr\Log\NullLogger; #autoload会自动引入Psr\Log\NullLogger类
$foo=new NullLogger();#就可以直接用了
}
laraver={
1. 用composer create-project命令自动下载laravel,同时自动安装依赖库
#composer create-project laravel/laravel=5.1.1
1.4 配置虚拟主机
在nginx中,配置server段,指向
依我们要做的p2p金融网站为例:
#root html/jinrong/public;因为入口在public文件下
1.1路由器
Route::get('/yy', 'XxController@reg');
#上面的代码:当用GET方式访问 xx.com/yy 这个地址时,用XxController中的reg()方法去响应.刷新和直接进网站都是get方式
Route::post('/zz', 'XxController@pay');
#前面一定要加index.php/控制器/方法
#上面的代码:当用POST方式访问 xx.com/zz 这个地址时,用XxController中的pay()方法去响应.比如提交表单,指定post
Route::get('/', function () {
return 'hello';#当GET访问网站根目录"/"时,用第2个参数的匿名函数去响应.
})
#注意: 如果同一个路由被写了2次,则以最后一次路由为准!
2.2 路由器与参数传递
Route::get('user/{id}', function ($id) {
return 'User '.$id; #下例是指 xx.com/user/123这样的URL, user后面的值将会捕捉到,
});
#传递可选参数
Route::get('user/{name?}', function ($name = null) {
return $name; #把$name显示到页面
});
#参数限制
Route::get('user/{id}', function ($id) {
})->where('id', '[0-9]+');#后面是正则表达式
控制器
#所有的控制器放在'
#类名叫XxController
#命名空间是 App\Http\Controllers
#继承自App\Http\Controllers\Controller
文件名: Xx控制器Controller.php
例: UserController.php
}
namespace App\Http\Controllers;
use App\Http\Controllers\Controller;
class XxxController extends Controller {
public function add() {
}
#return view('login',['lists'=>'888111']);传入数据到login模版中
视图模板放在
xx.php ,或xx.blade.php
#如果以.php结尾,模板中直接写PHP语法即可,例
#如果以.blade.php结尾,则是用laravel特有的模板语法.例{{ $title }},也可以用
注意: 如果有 xx.php , xx.blade.php两个同名模板, 优先用blade模板.
字段类型网站
http://laravelacademy.org/post/130.html
.env文件增加数据库信息
很实用的建表工具
#数据库迁移
php artisan migrate#执行所有迁移文件
php artisan migrate:rollback#指全部回滚,只会回滚最后修改一次的
php artisan make:migration create_addlist_table#命令:创建一张名为users的表
#格式
#up
Schema::create('alevelrate', function (Blueprint $table) {
$table->BigInteger('ID',true,false)->unique('alevelrate_PK');#索引,添加唯一索引
$table->bigInteger('fdlMainID')->comment('主表ID')->default(0);
$table->date('fddDateB')->comment('开始日期')->index('acouponsrules_idx')->nullable();#添加普通索引
$table->date('fddDateE')->comment('结束日期')->index('acouponsrules_idx_B')->nullable();#nullable()允许该列的值为NULL
$table->boolean('fdbStop')->comment('是否停用')->default(false);
$table->timestamps();#添加时间
});
#down
Schema::drop('alevelrate');
#常用类型
$table->boolean('confirmed');#等同于数据库中的BOOLEAN类型
$table->bigIncrements('id');#自增ID,类型为bigint
$table->integer('votes'); #等同于数据库中的 INTEGER 类型
$table->bigInteger('votes');#等同于数据库中的BIGINT类型
$table->string('name', 100);#等同于数据库中的 VARCHAR,带一个长度
$table->char('name', 4);#等同于数据库中的CHAR类型
$table->float('amount');#等同于数据库中的 FLOAT 类型
$table->double('column', 15, 8);#等同于数据库中的DOUBLE类型,带精度, 总共15位数字,小数点后8位.
$table->increments('id');#数据库主键自增ID
$table->longText('description');#等同于数据库中的 LONGTEXT 类型
$table->smallInteger('votes');#等同于数据库中的 SMALLINT 类型
$table->string('email'); #等同于数据库中的 VARCHAR 列 .
$table->date('created_at');#等同于数据库中的DATE类型
$table->timestamps(); #添加 created_at 和 updated_at列.
$table->integer('votes')->unsigned(); #无符号类型
#增加字段
php artisan make:migration add_字段名_to_表名_table --table=表名 #字段名可以暂时写一个,其实可以写增加多个
#里面修改的代码
$table->string('agee')->nullable()->after('age');#指定在那个字段后面
$table->string('ageed')->nullable()->after('email');#指定在那个字段后面
$table->bigIncrements('id');#自增ID,类型为bigint
$table->bigInteger('votes');#等同于数据库中的BIGINT类型
#数据库操作
#如果不用Model,我们也可以用laravel的DB类操作数据库.
增:
#插入单行 (注意看数组的键):返回值为true 和 false
DB::table('users')->insert(['email'=>'[email protected]']);
#插入多行:
DB::table('users')->insert([['email'=>'[email protected]'],['email'=>'[email protected]'],]);
#插入后 返回主键值 获取主键值,用insertGetId()方法
DB::table('users')->insertGetId(['email'=>'[email protected]']);
改:
DB::table('users')->where('id', 1)->update(['age' => 19]);#修改
DB::table('users')->where('id',1)->increment('age');#自增1
DB::table('users')->where('id',2)->increment('age', 3);
DB::table('users')->where('id',3)->decrement('age');#自减1
DB::table('users')->where('id',4)->decrement('age', 3);
删:
DB::table('users')->where('id' , '>' , '6')->delete();
查:
DB::table('users')->get();#查全部
DB::table('users')->where('id' , > 6)->get();#条件查
DB::table('users')->select('id','email')->where('id' , > 6)->get();#根据字段查
DB::table('users')->where('id',6)->first()#重复取出单行
#在blade模板中,不是assign ,而是以数组参数集中传递.
$data = [
'title'=>'天气预报',
'content'=>'今天天气真不错',
'score'=>mt_rand(40,90),
'users'=>['zhangsan','lisi','wangwu']
];
return view('test',$data);
}
#自动生成Model
php artisan make:model Msg#会自动创建Msg模型,里面的继承也会写好
#复杂查询
Msg::where('id','>',2)->orderBy('id','desc')->skip(2)->take(1)->get();#select .. where id>2 order by id desc limit 2,1;
#csrf_token(),生成防跨域提交的随机串
如果是From表单提交,那么会提示csrf_token()验证,这是laraver框架所限制的
csrf_token()
生成防跨域提交的随机串