首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >雄辩的lastInsertId

雄辩的lastInsertId
EN

Stack Overflow用户
提问于 2016-08-09 22:51:34
回答 1查看 1.2K关注 0票数 2

我想获得在两个表中都插入的'loan_id‘。

使用return $this->getConnection()->getPdo()->lastInsertId();,我想我至少应该获得最后一个id (对于这个模型,它被指定为'id‘并自动递增),但我也没有收到它。(仅为空响应)

如果我能得到在数据库中插入的完整对象,那就更好了。

因此,我希望在事务失败时捕获异常,并在事务失败时返回错误消息,在事务成功时返回$loan_id或saved Object。该怎么做呢?

代码语言:javascript
复制
<?php
namespace App\model;

use Illuminate\Database\Eloquent\Model as Eloquent;
//use Illuminate\Support\Facades\DB as DB;
use Illuminate\Support\Manager as Manager;
use Illuminate\Database\Capsule\Manager as DB;
use PDO;

class Loan extends Eloquent
{
    protected $table = 'loans';

    protected $primaryKey = 'id';

    public $timestamps = false;

    public function addLoan($amount, $instalments)
    {

        // Manager::connection()->getPdo()->beginTransaction();
        $this->getConnection()->transaction(function () use ($amount)
        {
            $loan_id = substr(uniqid(), -12);

            DB::table('loans')->insert([
                    'loan_id' => $loan_id,
                    'amount' => $amount,
                    'status' => 'requested'
                ]
            );

            DB::table('loan_instalment')->insert([
                    'loan_id' => $loan_id,
                    'principal' => 777.12,
                    'interest' => 333.12
                ]
            );

        });

        return $this->getConnection()->getPdo()->lastInsertId();
    }
}
?>
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2016-08-09 22:59:48

而不是

代码语言:javascript
复制
$this->getConnection()->getPdo()->lastInsertId()

您可以这样做:

代码语言:javascript
复制
DB::table('table')->insert([...])->lastInsertId();

和捕获异常请参阅:Laravel: Using try...catch with DB::transaction()

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/38854072

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档