gpt4 book ai didi

php - PostgreSQL Laravel 不返回 id

转载 作者:行者123 更新时间:2023-11-29 13:50:47 25 4
gpt4 key购买 nike

我正在使用带有 insertGetId 方法的 Laravel 查询生成器。

带触发器的迁移。触发器为每个用户创建新表。

public function up()
{
Schema::create('links_group', function (Blueprint $table) {
$table->increments('id');
$table->integer('users_id');
$table->string('name');
$table->timestamps();
$table->softDeletes();
});

DB::statement("CREATE OR REPLACE FUNCTION links_group_triger() RETURNS trigger AS
$BODY$
DECLARE
temp_users_id INTEGER;
tablenew TEXT;
BEGIN
temp_users_id := NEW.users_id;
tablenew := 'links_group_' || NEW.users_id;
IF NOT EXISTS( SELECT * FROM links_group WHERE users_id = temp_users_id ) THEN
EXECUTE 'CREATE TABLE ' || tablenew || ' ( id SERIAL, PRIMARY KEY (id) ,
CHECK ( users_id = ' || temp_users_id || ' ) ) INHERITS (links_group)';
END IF;
EXECUTE 'INSERT INTO ' || tablenew || ' SELECT(' || TG_RELNAME || ' ' || quote_literal(NEW) || ').* RETURNING id;';
RETURN NULL;
END;
$BODY$
LANGUAGE plpgsql;");

DB::statement("CREATE TRIGGER links_group_triger
BEFORE INSERT ON links_group
FOR EACH ROW EXECUTE PROCEDURE links_group_triger();");

}

我的问题是当使用 insertGetId 数据被插入但 ID 没有返回时。

$id_group = DB::table('links_group')->insertGetId($form);

Laravel 抛出错误:PostgresProcessor.php 第 20 行中的 ErrorException: undefined offset :0

最佳答案

问题出在触发器中的“return null”。如果我更改为“返回新”,我有两个相同的插入物。我用代码解决了这个问题

DB::table('links_group')->insert($form);
$id_links = DB::select("SELECT currval('links_group_id_seq');")[0]->currval;

关于php - PostgreSQL Laravel 不返回 id,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41475145/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com