【问题标题】:how to Automatic insert record in the secondary table?如何在辅助表中自动插入记录?
【发布时间】:2021-08-01 14:23:09
【问题描述】:

大家好,这是我的表格结构:

reqest 和 Request_state :

我想在请求表中添加记录时自动在 Request_STATE 表中创建记录 request_state 存放Request Table的状态信息 你建议什么方法? 创建活动有意义吗?不使用触发器

【问题讨论】:

  • 是的,活动是个不错的选择
  • 我的分析器对您的问题有帮助吗? :)
  • @mrhn 是的,谢谢兄弟

标签: mysql laravel laravel-8


【解决方案1】:

您可以很容易地使用Laravel 中的内置模型事件来完成它,可以在模型boot() 方法上订阅该事件。保存后触发创建,您可以订阅多个事件以查看它们here

use Illuminate\Database\Eloquent\Model;

class RequestState extends Model {
    table = 'request_state';

    public function request()
    {
        return $this->belongsTo(Request::class);
    }
}

use Illuminate\Database\Eloquent\Model;

class Request extends Model {
    public static function boot() {
        static::created(function ($request) {
            $requestState = new RequestState([
                // your data
            ]); 
            $requestState->request->associate($request);
            $requestState->save();
        });
    }
}

这只会在Laravel 模型中触发,但是当你这样做时,它会创建一个带有状态的新请求。

Request::create([]);

使用Listener 的替代方法可以获得相同的结果,但将逻辑移出模型。这是一个简单直接的解决方案,并且更容易维护,因为您不需要在侦听器中搜索逻辑。

【讨论】:

  • 如果有帮助,请接受它作为问题左侧的答案:)
猜你喜欢
  • 1970-01-01
  • 2012-07-23
  • 2011-01-16
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2017-01-22
  • 2012-08-29
  • 2020-04-16
相关资源
最近更新 更多