这应该是中间件吗?
Should this be middleware?
我的 DB
几乎每个 table
都有两个字段,它们是 created_by
和 modified_by
。所以,现在我的 controller
:
里有这个
$request['created_by'] = Auth::user->id;
$request['modified_by'] = Auth::user->id;
我在想我应该把它变成 middleware
或更多的东西 RESTful
但我不知道我会怎么做。现在,我 100% 的 store
方法都在使用它,但以后我可能会有一个没有这两个字段的 table
,这是我感到困惑的地方。
中间件的工作是处理请求,但是你需要在这里控制模型的创建和更新。所以在我看来,我会在模型事件中添加这些部分,并从所有控制器中删除它们。
因此,一旦模型正在创建或更新,就会触发一个事件来更改这些 parameters/attributes,就在保存模型之前。
这可以根据 documentation 轻松实现:
在您的 AppServiceProvider 中:
<?php
namespace App\Providers;
use App\User;
use Illuminate\Support\ServiceProvider;
class AppServiceProvider extends ServiceProvider
{
/**
* Bootstrap any application services.
*
* @return void
*/
public function boot()
{
User::creating(function ($user) {
if ( ! $user->isValid()) {
return false;
}
});
}
您可以将 User
替换为您的型号名称,并确保将其导入。
我的 DB
几乎每个 table
都有两个字段,它们是 created_by
和 modified_by
。所以,现在我的 controller
:
$request['created_by'] = Auth::user->id;
$request['modified_by'] = Auth::user->id;
我在想我应该把它变成 middleware
或更多的东西 RESTful
但我不知道我会怎么做。现在,我 100% 的 store
方法都在使用它,但以后我可能会有一个没有这两个字段的 table
,这是我感到困惑的地方。
中间件的工作是处理请求,但是你需要在这里控制模型的创建和更新。所以在我看来,我会在模型事件中添加这些部分,并从所有控制器中删除它们。 因此,一旦模型正在创建或更新,就会触发一个事件来更改这些 parameters/attributes,就在保存模型之前。
这可以根据 documentation 轻松实现:
在您的 AppServiceProvider 中:
<?php
namespace App\Providers;
use App\User;
use Illuminate\Support\ServiceProvider;
class AppServiceProvider extends ServiceProvider
{
/**
* Bootstrap any application services.
*
* @return void
*/
public function boot()
{
User::creating(function ($user) {
if ( ! $user->isValid()) {
return false;
}
});
}
您可以将 User
替换为您的型号名称,并确保将其导入。