Laravel 创建的事件返回了错误的记录
Laravel created event returning the wrong record
我目前正在使用 Laravel 观察者在我的项目中实施事件,但是,我 运行 遇到了一些问题,其中创建的事件 return 是一个错误的记录,例如,我创建了一个名为 Like 的记录,其中 post_id 设置为 2,user_id 设置为 1,所以 laravel 创建的事件应该 return 这条记录对吗?除了它 return 是 post_id 设置为 0 且 user_id 设置为 1 的记录。
我的 LikeObserver class:
class LikeObserver
{
/**
* Handle the like "created" event.
*
* @param \App\Like $like
* @return void
*/
public function created(Like $like)
{
dd($like);
$postId = $like->post_id;
Post::find($postId)->increment('likes_count');
}
}
正如你所看到的,每当我转储新创建的记录时,它 return 是这样的:
我的 LikeController class:
class LikeController extends Controller
{
public function insert(Request $request)
{
if(Like::where('user_id','1')->find($request->post_id))
{
return;
}
$like = Like::create(['post_id'=>$request->post_id,'user_id' => '1']);
}
public function remove(Request $request)
{
Like::where('user_id',auth()->user()->id)->findOrFail($request->post_id)->delete();
}
}
我将 post_id 设置为 2,但是,Laravel return 新创建的记录 post_id 设置为 0。
class LikeController extends Controller
{
public function insert(Request $request)
{
$like = Like::firstOrCreate([
'user_id' => '1',
'post_id' => $request->post_id,
]);
if(! $like->wasRecentlyCreated) {
return;
}
}
public function remove(Request $request)
{
Like::where([
'user_id' => auth()->user()->id,
'post_id' => $request->post_id,
])->first()->delete();
}
}
好吧,显然解决方法是使用创建事件而不是创建事件...这确实 return 正确的记录
public static function boot()
{
parent::boot();
static::creating(function ($like){
//returns the correct record.
dd($like);
});
}
我目前正在使用 Laravel 观察者在我的项目中实施事件,但是,我 运行 遇到了一些问题,其中创建的事件 return 是一个错误的记录,例如,我创建了一个名为 Like 的记录,其中 post_id 设置为 2,user_id 设置为 1,所以 laravel 创建的事件应该 return 这条记录对吗?除了它 return 是 post_id 设置为 0 且 user_id 设置为 1 的记录。 我的 LikeObserver class:
class LikeObserver
{
/**
* Handle the like "created" event.
*
* @param \App\Like $like
* @return void
*/
public function created(Like $like)
{
dd($like);
$postId = $like->post_id;
Post::find($postId)->increment('likes_count');
}
}
正如你所看到的,每当我转储新创建的记录时,它 return 是这样的:
我的 LikeController class:
class LikeController extends Controller
{
public function insert(Request $request)
{
if(Like::where('user_id','1')->find($request->post_id))
{
return;
}
$like = Like::create(['post_id'=>$request->post_id,'user_id' => '1']);
}
public function remove(Request $request)
{
Like::where('user_id',auth()->user()->id)->findOrFail($request->post_id)->delete();
}
}
我将 post_id 设置为 2,但是,Laravel return 新创建的记录 post_id 设置为 0。
class LikeController extends Controller
{
public function insert(Request $request)
{
$like = Like::firstOrCreate([
'user_id' => '1',
'post_id' => $request->post_id,
]);
if(! $like->wasRecentlyCreated) {
return;
}
}
public function remove(Request $request)
{
Like::where([
'user_id' => auth()->user()->id,
'post_id' => $request->post_id,
])->first()->delete();
}
}
好吧,显然解决方法是使用创建事件而不是创建事件...这确实 return 正确的记录
public static function boot()
{
parent::boot();
static::creating(function ($like){
//returns the correct record.
dd($like);
});
}