Laravel 通过模型存储数据
Laravel store data thru model
我不知道如何标记标题。任何人有想法都可以提出修改建议。
我的应用程序中有一系列数据库模型。
我目前可以向模型添加一个全局范围,并让模型在我对 key:value 对数据库的查询中自动添加一个 "where" 子句。这很好用。
class Customers extends Model
{
protected $table = 'customers';
protected static function boot() {
parent::boot();
static::addGlobalScope('companyRecordID', function (Builder $builder) {
$builder->where('companyRecordID', Auth::guard('user')->user()->companyRecordID);
});
}
}
我在尝试确定是否可以这样做时遇到了麻烦;我希望能够在创建数据库记录时自动存储 Auth::guard('user')->user()->companyRecordID
中的 "companyRecordID"。类似于 created_at
和 updated_at
是自动创建的,不需要来自控制器的代码来定义。
有人可以指导我找到我应该寻找的东西吗?我花了几个小时试图 google 关键字对找到答案但无济于事。
如果您使用模型创建记录,您可以侦听模型的 creating
事件,然后添加您可能需要的任何其他字段。您可以为 Customers
:
上的 creating
事件创建监听器
Customers::creating(function ($customer) {
if (auth('user')->user()) {
$customer->companyRecordID = auth('user')->user()->companyRecordID;
}
});
您可以将其放入服务提供商的 boot
方法或模型的 boot
方法中。如果将其放入模型的 boot
方法中,您可能需要调整为使用 static::
而不是 Customers::
.
我相信你得到了答案,但是,
在您的模型上请使用protected $fillable
protected $fillable = ['','',''];
protected $table = 'customers';
另外,您可以使用 Relationships 来优化您的代码。
我不知道如何标记标题。任何人有想法都可以提出修改建议。
我的应用程序中有一系列数据库模型。
我目前可以向模型添加一个全局范围,并让模型在我对 key:value 对数据库的查询中自动添加一个 "where" 子句。这很好用。
class Customers extends Model
{
protected $table = 'customers';
protected static function boot() {
parent::boot();
static::addGlobalScope('companyRecordID', function (Builder $builder) {
$builder->where('companyRecordID', Auth::guard('user')->user()->companyRecordID);
});
}
}
我在尝试确定是否可以这样做时遇到了麻烦;我希望能够在创建数据库记录时自动存储 Auth::guard('user')->user()->companyRecordID
中的 "companyRecordID"。类似于 created_at
和 updated_at
是自动创建的,不需要来自控制器的代码来定义。
有人可以指导我找到我应该寻找的东西吗?我花了几个小时试图 google 关键字对找到答案但无济于事。
如果您使用模型创建记录,您可以侦听模型的 creating
事件,然后添加您可能需要的任何其他字段。您可以为 Customers
:
creating
事件创建监听器
Customers::creating(function ($customer) {
if (auth('user')->user()) {
$customer->companyRecordID = auth('user')->user()->companyRecordID;
}
});
您可以将其放入服务提供商的 boot
方法或模型的 boot
方法中。如果将其放入模型的 boot
方法中,您可能需要调整为使用 static::
而不是 Customers::
.
我相信你得到了答案,但是,
在您的模型上请使用protected $fillable
protected $fillable = ['','',''];
protected $table = 'customers';
另外,您可以使用 Relationships 来优化您的代码。