Может быть, вы можете получить представление об этом.
echo '<pre>';
class Order
{
#######################
# It would be better to separate the database incrementing id and the transction id for the order
#######################
public $id;
public $transaciton_id;
/**
* Set the incrementing id when the object is instantiated and also set the transaction id for this order
*/
public function __construct($lastid,$user_id)
{
$this->id=$lastid+1;
$this->set_transaction_id($user_id);
}
/**
* Set the transaction id
*
*/
private function set_transaction_id($user_id)
{
$date = date ('ymd');
$this->transaciton_id=$date.sprintf("%03d",$user_id).sprintf("%03d",$this->id);
}
}
$user_id=90;//user id
//array of orders
$orders=[];
//adding new orders
$orders[]=new Order(count($orders),$user_id);
$orders[]=new Order(count($orders),$user_id);
$orders[]=new Order(count($orders),$user_id);
$orders[]=new Order(count($orders),$user_id);
$orders[]=new Order(count($orders),$user_id);
print_r($orders);
Результат:
Array
(
[0] => Order Object
(
[id] => 1
[transaciton_id] => 180702090001
)
[1] => Order Object
(
[id] => 2
[transaciton_id] => 180702090002
)
[2] => Order Object
(
[id] => 3
[transaciton_id] => 180702090003
)
[3] => Order Object
(
[id] => 4
[transaciton_id] => 180702090004
)
[4] => Order Object
(
[id] => 5
[transaciton_id] => 180702090005
)
)
UPDATE:
Чтобы получить последний вставленный идентификатор модели, возможно, вы можете сделать это следующим образом. Возможно, это не лучший ответ, но вы можете получить тот же результат.
public static function model_last_id($model)
{
$example_model=$model::orderBy('id','desc')->First();
if($example_model!=null)
return $example_model->id;
else
return null;
}