両方のテーブルに挿入された 'loan_id'を取得したいとします。Eloquent lastInsertId
return $this->getConnection()->getPdo()->lastInsertId();
私は少なくとも最後のID(これは 'id'とautoincrementedとしてこのモデルに指定されています)を取得する必要があると思いますが、それも受け取りません。 (ちょうど空のレスポンス)
DBに挿入された完全なオブジェクトを取得できれば、さらに優れています。
したがって、トランザクションが失敗した場合は例外をキャッチし、失敗した場合はエラーメッセージを返し、成功した場合は$ loan_idまたは保存されたオブジェクトを返します。どうやってするの ?
DB::table('table')->insert([...])->lastInsertId();
を、例外キャッチ参照:
<?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();
}
}
?>
次の2つのインサートを持っています。 last_insert()は、実行された最後の挿入から1つのIDだけを返すので、 'loan_instalment'からIDを取得することができます。 –
はい、私はそれを理解しています。しかし、私はidを取得しません –