Laravel一对一的关系。将用户名从表保存到另一个表

时间:2017-12-12 10:55:24

标签: php mysql laravel laravel-5 eloquent

TLDR:如何从一个表创建一个关系?例如,我希望用户表中的更改自动反映到供应商表中?类似于它只是从用户表引用。

我有这两张桌子

========================
     USER table

     1. id
     2. username
     3. password
     4. name
========================

========================
     SUPPLIER table

     1. id
     2. username
     3. 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();
}

你知道,这不是一种正确的关系。这就像手动保存到两个表中一样。如何使Supplier表依赖于用户表?例如,每次我在User表中进行更改时,它都会自动反映到供应商表,而不必触发更新方法。

2 个答案:

答案 0 :(得分:0)

你可能对触发器感兴趣吗?如果您可以创建触发器,则可以在每次插入 final float distance = clontarfFC.distanceTo(currentLocation)/1000; final String formattedDistance = String.format("%.02f", distance); 时使用它们插入SUPPLIER

类似的东西:

USER

答案 1 :(得分:0)

实现这一目标的一种方法是在你的启动方法中注册和事件 用户模型。

protected static function boot()
{
    parent::boot();

    static::created(function($user) {
        Supplier::create([
            'username' => $user->username  //or email or whatever you have.
            'name' => $user->name
        ]);
    });
}