作者:南丞 时间:2017-11-17 08:30
闲话不多说,直接起飞:
$flights = App\Flight::where('active', 1)
->orderBy('name', 'desc')
->take(10)
->get();
注:由于 Eloquent 模型本质上就是查询构建器,可以在Eloquent查询中使用查询构建器的所有方法。 比如: where(‘id’,’<>’,5) 等
查询构造器常用的方法:
first(); 从数据表中获取一行数据
value(); 从结果中获取单个值
pluck(); 获取包含单个列值的数组,列值指定自定义键(第二个参数)
count();
max();
avg();
sum();
Select('字段');
orderBy();
where 写法:
where('id','<>',5)
where([
['status', '=', '1'],
['subscribed', '<>', '1'],
])
whereBetween 方法验证列值是否在给定值之间:
whereBetween('votes', [1, 100])
whereIn 方法验证给定列的值是否在给定数组中:
whereIn('id', [1, 2, 3])
whereNull 方法验证给定列的值为NULL:
whereNull('updated_at')
whereDate 方法用于比较字段值和日期:
whereDate('created_at', '2016-10-10')
whereColumn 方法用于验证两个字段是否相等:
whereColumn('first_name', 'last_name')
查询排序
latest()
oldest()
latest 和 oldest 方法允许你通过日期对结果进行排序,默认情况下,结果集通过 created_at 字段进行排序
插入
insertGetId () 使用insertGetId方法来插入记录并返回ID值:
3, 模板中输出带有html文本的内容
```
{!! !!}
``` 4, 开启debugbar
composer.json 文件中 ```php
"barryvdh/laravel-debugbar": "^2.3", ```
app.php 中 的 providers中 添加
```php
'Barryvdh\Debugbar\ServiceProvider',
```
5, 配置使用多路由文件
在 app/Providers/RouteServiceProvider.php 的 map 方法中可以如下定义:
public function map(Router $router)
{
$this->mapApiRoutes();
$this->mapWebRoutes();
$this->mapAdminRoutes();
}
protected function mapAdminRoutes()
{
Route::group([
'prefix'=>'/admin',
'middleware' => 'admin',
'namespace' => 'App\Http\Controllers\Admin',
], function ($router) {
require base_path('routes/admin.php');
});
}
6, 在使用框架的时候加一个Service层 然后在控制器中 直接去new这个Service层 也可以使用契约 把这个做成一个服务
1,在app下新建一个contracts 文件夹 用来存放我们自定义的契约
新建文件定义一个契约接口TestContract。
<?php
namespace App\Contracts;
interface TestContract
{
public function callMe($controller);
}
2,在Services 新建一个 TestService
<?php
namespace App\Services;
use App\Contracts\TestContract;
class TestService implements TestContract
{
public function callMe($controller)
{
dd('Call Me From TestServiceProvider In '.$controller);
}
}
3,接下来我们定义一个服务提供者TestServiceProvider用于注册该类到容器。创建服务提供者可以使用如下Artisan命令:
php artisan make:provider TestServiceProvider
4,修改生成的TestServiceProvider.php
public function register()
{
//使用singleton绑定单例
$this->app->singleton('test',function(){
return new TestService();
});
//使用bind绑定实例到接口以便依赖注入
$this->app->bind('App\Contracts\TestContract',function(){
return new TestService();
});
}
5,注册服务提供者
'providers' => [
//其他服务提供者
App\Providers\TestServiceProvider::class,
],
7, 文件上传
//打开config/filesystems.php 找到 disks
'disks' => [
// 上面还有很多,下面是自己加的
// 新建一个本地端uploads空间(目录) 用于存储上传的文件
'uploads' => [
'driver' => 'local',
// 文件将上传到storage/app/uploads目录
'root' => storage_path('app/uploads'),
// 文件将上传到public/uploads目录 如果需要浏览器直接访问 请设置成这个
//'root' => public_path('uploads'),
],
]
//新建一个上传Controller
namespace App\Api\V1\Controllers\Upload;
use Dingo\Api\Http\Request;
use Dingo\Api\Exception\StoreResourceFailedException;
use Storage;
class UploadFiles
{
public function upfile(Request $request) {
if (!$request->hasFile('file')) {
return response()->json([], 500, '无法获取上传文件');
}
$file = $request->file('file');
if ($file->isValid()) {
// 获取文件相关信息
$originalName = $file->getClientOriginalName(); // 文件原名
$ext = $file->getClientOriginalExtension(); // 扩展名
$realPath = $file->getRealPath(); //临时文件的绝对路径
$type = $file->getClientMimeType(); // image/jpeg
// 上传文件
$filename = date('Ymd/His');
// 使用我们新建的uploads本地存储空间(目录)
$path = $file->store($filename, 'uploads');
return response()->json([
'status_code' => 200,
'message' => 'success',
'photo' => $path,
'name' => $originalName,
]);
} else {
return response()->json([], 500, '文件未通过验证');
}
}
}
8,model注入:
public function destroy(Article $article)
{
}
*: Article Model类必须与路由一致**
9, 排除 CSRF 保护
中间件VerifyCsrfToken 中 设置
$except 的内容就Ok了