读一读

首先在composer.json文件中的require加上"gregwar/captcha":"1.*",在用cmd 更新compose update

然后就可以正常的在控制器中使用了

引入文件

use Gregwar/Captcha/CaptchaBuilder;
use Session;//用于缓存验证码信息
//创建验证码
$builder = new CaptchaBuilder();
$builder->build(100,40,null);//宽高字体
$builder->getPhrase();//获取验证码
Session::flash("captcha",验证码的值);//缓存起来
$builder->output();//输出返回验证码图片。
Session::get("captcha");//获取验证码值

资源文件css js 图片等放在public中,模板引用是用

href="{{asset('public目录下的路径')}}"


$php_errormsg保存了最新一次的错误信息。

$HTTP_RAW_POST_DATA原生的POST数据

$http_response_header数组,HTTP响应头,应用于局部

$argc传递给脚本的参数数目,最小值为1,就是当前文件名。

$argv传递给脚本的参数数组。


例如用户有很多文章,某个国家有很多用户,那么某个国家有很多文章。

国家模型

public function posts(){
  return $this->hasManyThrough(最终模型,中间模型,国家id,用户id);
}

同一对一的差不多,不同的是使用hasMany声明

public function posts(){
    $this->hasMany(....关联模型);
}

User::find(1)->posts();//获取多个模型


多对多时,有中间表

img (2).jpg

可以通过动态属性pivoy获取中间表字段。



一对一的关系

例如user表中的用户有对应的一个user_accounts

则在User模型中定义方法

public function account(){
    return $this->hasOne('App/Model/UserAccount);
}

User::find(1)->account();//获取对应的UserAccount

同时可以在UserAccount里面定义

public function user(){
  return $this->belongsTo('App/User);
}

这里是没有指定外键的,可以在声明的时候指定对应的外键,在第二个参数

父模型一般使用id作为主键的,如果不是它来关联,则指定第三个参数

hasOne/belongTo('AppUser',$foreign_key,$local_key)

八种事件creating created updating update saving saved deleting delete。前后触发。

可以在任何地方去注册模型事件,可以在服务提供者的boot()

Post::saving(function($post){
  echo "saving event happen";
});

如果是ing事件,返回false则对应的真实操作将会停止


常用的查询可以自定义方法到模型中,要加前缀scope,例如要使用popular方法,则..

public function scopePopular($query){
   return $query->where(...);
}

这时就可以直接用 模型::popular()->.....


获取再删除  ...find(5)->delete()

直接删除  destroy(5)  5指的是主键id


软删除 其实是标记数据为删除,查询时就过滤。真实数据是没有被删除的。

在模型类中使用use SoftDeletes;这个trait。

要对软删除的数据库表添加delete_at字段

软删除使用方法 ...find(5)->trashed();

如果想查询到软删除了的记录,用withTrashed()

只查询软删除记录用onlyTrashed()

使用restore()方法恢复软删除

使用forceDelete()强制删除了,真删


create方法可以批量插入数据,这时候模型中使用属性$fillable和$guarded声明哪些属性了以批量设置,哪些不可以。这两个只能定义一个,非白就黑。

当要对禁止字段赋值时,使用save方法。模型类也可以用update方法更新数据。