ref: https://laracasts.com/series/laravel-from-scratch-2017/
Model
Scope function
ref: http://laravelacademy.org/post/6979.html#toc_18
在 Model 中定义 scope
开头的 public function
相当于创建一个作用于当前 Model 对象的(这和普通写法有什么区别?)新的链式调用
1 | use Illuminate\Database\Eloquent\Model; |
调用时不需要加上 scope
前缀$users = \App\User::popular()->active()->orderBy('created_at')->get();
如果是普通写法会产生这样的问题
1 | use Illuminate\Database\Eloquent\Model; |
Querying Relationship Existence
ref: http://laravelacademy.org/post/6996.html#toc_11
查询存在的关联关系, 例如
博客有许多 tags, 我们不希望显示没有 post 的 tag
1 | // Retrieve all tags that have at least one post... |
View
View composer
ref: http://laravelacademy.org/post/6758.html#toc_2
网站的公共部分需要 assign 变量的时候, 比如 blog 的 sidebar 需要博客归档
可以使用 view composer 来避免在不同方法中重复 assign 变量
在 AppServiceProvider 中的 boot
方法中
1 | public function boot() |
Controller
RESTful Controller
ref: http://laravelacademy.org/post/6745.html#toc_6php artisan make:controller TasksController -r
Route::resource('tasks', 'TasksController');
1 | GET /tasks => TasksController@index // 列出所有 task |