Php 拉威尔一对一的关系。将用户名从表保存到另一个表
TLDR:如何创建从一个表到另一个表的关系?例如,我希望用户表中的更改自动反映到供应商表中?类似于它只是从用户表中引用 我有这两张桌子Php 拉威尔一对一的关系。将用户名从表保存到另一个表,php,mysql,laravel,laravel-5,eloquent,Php,Mysql,Laravel,Laravel 5,Eloquent,TLDR:如何创建从一个表到另一个表的关系?例如,我希望用户表中的更改自动反映到供应商表中?类似于它只是从用户表中引用 我有这两张桌子 ======================== USER table 1. id 2. username 3. password 4. name ======================== 及 每次我添加新用户时,它都会自动保存到供应商表中。这就是我所做的: function saveUser($po
========================
USER table
1. id
2. username
3. password
4. name
========================
及
每次我添加新用户时,它都会自动保存到供应商表中。这就是我所做的:
function saveUser($postdata) {
$newUser= new \App\UserModel;
$newUser->email = $postdata['email'];
$newUser->password = $postdata['password'];
$newUser->name = $postdata['name'];
$newUser->save();
$this->saveSupplier($postdata['email'], $postdata['name']);
}
function saveSupplier($email, $name) {
$newSupplier = new \App\SupplierModel;
$newSupplier->email = $email;
$newSupplier->name = $name;
$newSupplier->save();
}
你看,这不是一段感情,对吧。这就像手动保存到两个表中一样。如何使供应商表依赖于用户表?例如,每次我在用户表中进行更改时,它都会自动反映到供应商表,而无需启动更新方法 您是否对触发器感兴趣。如果可以创建触发器,则每次插入
用户时都可以使用触发器插入供应商
比如:
CREATE TRIGGER t_reflect_changes_user_supplier
AFTER INSERT
ON USER FOR EACH ROW
BEGIN
-- trigger code
INSERT INTO SUPPLIER (username,name) VALUES new.username,new.name
END;
实现这一点的一种方法是在
用户型号
protected static function boot()
{
parent::boot();
static::created(function($user) {
Supplier::create([
'username' => $user->username //or email or whatever you have.
'name' => $user->name
]);
});
}
为什么不在users表中创建一个名为“supplier”的新布尔字段呢?我只在供应商表中看到冗余信息。
protected static function boot()
{
parent::boot();
static::created(function($user) {
Supplier::create([
'username' => $user->username //or email or whatever you have.
'name' => $user->name
]);
});
}