例如: $item = App\Deployment::firstOrNew( ['name' => '问答小程序'], ['delayed' => 1] ); firstOrNew 需要手动调用 save,才会保存到数据库.适合同时需要修改其他属性的场景. firstOrCreate 会自动保存到数据库.适合不需要额外修改其他属性的场景. 注意:MassAssignmentException firstOrCreate 一定要设置 model 的 fillable, 否则会报 MassAss…
简单的,laravel里get()得到的是一组数据,first()得到的是一个model数据. 从形式上,laravel里每一个model数据(record),在取出的时候都是用的PHP的stdClass来包裹或封装,一个model数据就是一个stdClass,stdClass是一个没有属性和方法的空类,一般用来创建一个匿名对象或将非对象类型转换成对象,这样我们就可以很放便的操作它,动态的添加.删除属性: //实例化一个空对象 $obj = new stdClass(); //给对象动态添加属性…
asset()方法用于引入 CSS/JavaScript/images 等文件,文件必须存放在public文件目录下.url()方法生成一个完整的网址.…
job 是异步执行.适合耗时长的任务.例如,批量发送邮件,短信. event 是在 request 的生命周期内执行.适合耗时短的操作.例如,更改数据字段状态. 但是, event 的好处是,可以复用各种监听.例如,事件 A1 可以触发 B1, B2; 事件 A2 可以触发 B1, B2, B3. 混合使用 例如,在 event 中添加 job 任务. 参考 https://sergeyzhuk.me/2016/02/23/laravel-jobs-vs-events/…
检索单个模型/集合 除了从指定的数据表检索所有记录外,你也可以通过 find 或 first 方法来检索单条记录.这些方法不是返回一组模型,而是返回一个模型实例: // 通过主键取回一个模型... $flight = App\Flight::find(1); // 取回符合查询限制的第一个模型... $flight = App\Flight::where('active', 1)->first(); 你也可以使用主键数组作为参数调用 find 方法,它将返回匹配记录的集合: $flights =…
Laravel的设计思想是很先进的,非常适合应用各种开发模式TDD, DDD和BDD,作为使用者最多的php框架,它为你准备好了一切,composer是个php的未来.laravel最大的特点和处优秀之就是集合了php比较新的特性,以及各种各样的设计模式,Ioc容器,依赖注入等.因此laravel是一个适合学习的框架,他和其他的框架思想有着极大的不同,这也要求你非常熟练php,基础扎实. ThinkPHP简称TP,TP借鉴了Java思想,基于PHP5,充分利用了PHP5的特性,部署简单只需要一个…
laravel门面模式与服务提供者区别 以 Laravel 自带的文件系统为例,在 config/app.php 的配置文件的 providers 数组中,注册了一个服务提供者: Illuminate\Filesystem\FilesystemServiceProvider::class,     在 alias 数组中定义了一个门面: ‘File’ => Illuminate\Support\Facades\File::class,     通过这两个步骤,我们就可以非常方便的使用 Larav…
auth:api 在 Laravel 的 Routing , Middleware , API Authentication 主题中都有出现. 一. 在 Routing 部分可以知道 auth:api 是中间件的名字,代表某个中间件实现,使用方式为 Route::middleware('auth:api'). 二. 在 Middleware 部分可以知道 auth:api 冒号后面的是 中间件参数,多个参数就用逗号分隔,也就是说 'api' 是 auth 中间件的参数.auth 中间件在 app…
简述 Laravel 的生命周期 Laravel 采用了单一入口模式,应用的所有请求入口都是 public/index.php 文件. 注册类文件自动加载器 : Laravel通过 composer 进行依赖管理,无需开发者手动导入各种类文件,而由自动加载器自行导入. 创建服务容器:从 bootstrap/app.php 文件中取得 Laravel 应用实例 $app (服务容器) 创建 HTTP / Console 内核:传入的请求会被发送给 HTTP 内核或者 console 内核进行处理…
firstOrCreate/ firstOrNew# 还有两种其它方法,你可以用来通过属性批量赋值创建你的模型:firstOrCreate 和firstOrNew.firstOrCreate 方法将会使用指定的字段/值对,来尝试寻找数据库中的记录.如果在数据库中找不到模型,则会使用指定的属性来添加一条记录. firstOrNew 方法类似 firstOrCreate 方法,它会尝试使用指定的属性在数据库中寻找符合的纪录.如果模型未被找到,将会返回一个新的模型实例.请注意 firstOrnew 返…