Ich möchte 'loan_id' bekommen, die in beiden Tabellen eingefügt wurde.Eloquent lastInsertId
Mit return $this->getConnection()->getPdo()->lastInsertId();
Ich denke, ich sollte mindestens letzte ID (die für dieses Modell als 'ID' und Autoincremented angegeben ist), aber ich bekomme es auch nicht. (nur leere Antwort)
Noch besser, wenn ich volles Objekt bekommen kann, das in DB eingefügt wurde.
Also, ich wollte eine Ausnahme abfangen, wenn die Transaktion fehlschlägt und Fehlermeldung im Falle eines Fehlers und $ loan_id oder gespeicherten Objekt im Erfolgsfall zurückgeben. wie es geht ?
<?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();
}
}
?>
Sie haben zwei Einsätze. Sie könnten die ID immer nur von "loan_instalment" erhalten, da last_insert() nur eine einzige ID von der letzten durchgeführten Eingabe zurückgibt. –
Ja, das verstehe ich. Aber ich bekomme keine ID –