まず、Laravel Builderの使い方
function(Builder $builder) {
//Builderの使い方、ここ、Builderがナイトwhereが使えない
//whereはclass Builderのメソッドだから
$builder->where('user_id', '1');
}
Scopeの使い方 where何回も繰り返すことができる
// User Modelでscopeを作る、メソードscope書き方決まっている。
namespace App;
use Illuminate\Database\Eloquent\Model;
class User extends Model
{
public function scopePopular($query)
{
return $query->where('votes', '>', 100);
}
public function scopeActive($query)
{
return $query->where('active', 1);
}
}
//確認、使う
$users = User::popular()->active()->get();
//メソード渡すことも可能!
public function scopeOfType($query, $type)
{
return $query->where('type', $type);
}
//実際に使ってみる
$users = User::ofType('vip')->get();
Model Post(記事)の例: VIPユーザーだけ記事見れる,GlobalScope
class Post extends Model
{
protected static function boot()
{
parent::boot();
static::addGlobalScope('user', function(Builder $builder) {
// vipユーザーだけ記事見れる
$builder->where('user_stage', 'vip');
});
}
}
イベント
creating 作成するとき
created 作成したとき
updating 更新するとき
updated 更新したとき
saving 保存するとき(制作でも、更新でも)
saved 保存したとき(制作でも、更新でも)
deleting 削除するとき
deleted 削除したとき
restoring ソフト削除をレストアするとき
restored ソフト削除をレストアしたとき
class Order extends Model
{
protected static function boot()
{
parent::boot();
static::creating(function ($order) { // 作成するときに
// falseをリターンしたら作成されません
return $order->isValid();
});
static::created(function ($order) { // 作成したときに
$order->sendOrderSubmittedEmail();
});
}
}
参考:http://qiita.com/henriquebremenkanp/items/e21de43e4b9079265d7f