Php 在laravel和postgresql中使用插入时返回

Php 在laravel和postgresql中使用插入时返回,php,laravel,postgresql,laravel-5,Php,Laravel,Postgresql,Laravel 5,我正在尝试使用Laravel 5.6将值插入到postgresql 10中。我有一张这样的桌子: test ---- test_id (identity generated by default, primary key) test_name 我的问题是获取刚刚插入的测试id $test_id = \DB::connection('pgsql')->insert( 'INSERT INTO test (test_name) VALUES (?) RETURNING tes

我正在尝试使用Laravel 5.6将值插入到postgresql 10中。我有一张这样的桌子:

test
----
test_id     (identity generated by default, primary key)
test_name
我的问题是获取刚刚插入的
测试id

$test_id = \DB::connection('pgsql')->insert(
    'INSERT INTO test (test_name) VALUES (?) RETURNING test_id', 
    ['hello world']
);
如果我打印出
$test\u id
,它只打印
1
。我用不同的名字在一个循环中做这件事。所有内容都正确插入,但即使数据库中的
test\u id
6
,我也会不断返回
1


如何在Laravel中正确返回
$test\u id

可以使用
insertGetId
,例如:

$id = DB::table('users')->insertGetId(
    [ 'name' => 'first' ]
);
或者试试这个:

$id = DB::getPdo()->lastInsertId();
在你的情况下,这是有效的:

$id = DB::connection('pgsql')
    ->table('test')
    ->insertGetId(['test_name' => 'hello world'], 'test_id');

可以使用
insertGetId
,例如:

$id = DB::table('users')->insertGetId(
    [ 'name' => 'first' ]
);
或者试试这个:

$id = DB::getPdo()->lastInsertId();
在你的情况下,这是有效的:

$id = DB::connection('pgsql')
    ->table('test')
    ->insertGetId(['test_name' => 'hello world'], 'test_id');

有点老了,但我刚刚以一种有趣的方式解决了这个问题,并想与大家分享我的答案

这有点奇怪,但使用select和selectOne laravel功能是关键:

//单行插入
$INSERT=DB::selectOne(“插入城市(用户ID、邮政编码)值(?,)返回uuid”,[$name,$postal\u code]);
echo$插入->uuid;
//多行插入
$INSERT=DB::select(“插入城市(用户识别码,邮政编码)值(?,,(?,?)返回识别码”,[$name,$postal识别码,$name,$postal识别码]);
foreach($插入为$city){
echo$city->uuid;
}

玩得开心:)

有点老了,但我刚刚以一种有趣的方式解决了这个问题,并想分享我的答案

这有点奇怪,但使用select和selectOne laravel功能是关键:

//单行插入
$INSERT=DB::selectOne(“插入城市(用户ID、邮政编码)值(?,)返回uuid”,[$name,$postal\u code]);
echo$插入->uuid;
//多行插入
$INSERT=DB::select(“插入城市(用户识别码,邮政编码)值(?,,(?,?)返回识别码”,[$name,$postal识别码,$name,$postal识别码]);
foreach($插入为$city){
echo$city->uuid;
}

玩得开心:)

你能试试$test\u id->test吗_id@berkaykılıçI出现错误:
尝试获取非对象的属性“test_id”
是否可以尝试$test_id->test_id@berkaykılıçI出现错误:
尝试使用
insertGetId
获取非对象的属性“test_id”时出错:
调用未定义的方法照亮\Database\PostgresConnection::insertGetId()
。知道为什么吗?啊,猜测方法不属于post gres连接,而是属于查询生成器。更新的答案,也许你可以找到一种使用它的方法。我使用多种类型的数据库,所以
DB::table
不起作用。我确实是根据
方法算出的。如果你想更新你的答案,我可以接受,否则我会发布我自己的。最后一个查询如下:
$test\u id=DB::connection('pgsql')->table('test')->insertGetId(['test\u name'=>'hello world','test\u id')
我想作为第二个参数,您可以指定希望它返回的内容。使用
insertGetId
会给我错误:
调用undefined方法illumb\Database\PostgresConnection::insertGetId()
。知道为什么吗?啊,猜测方法不属于post gres连接,而是属于查询生成器。更新的答案,也许你可以找到一种使用它的方法。我使用多种类型的数据库,所以
DB::table
不起作用。我确实是根据
方法算出的。如果你想更新你的答案,我可以接受,否则我会发布我自己的。最后一个查询如下:
$test\u id=DB::connection('pgsql')->table('test')->insertGetId(['test\u name'=>'hello world','test\u id')我猜作为第二个参数,您可以指定希望它返回的内容。