我在网上搜过了。
我想做的是:
我有一个主表id
,我需要添加一个名为ex.order_number
的列,该列从1000开始自动递增。
问题:
PHP似乎不喜欢这样,它抛出了一个错误
SQLSTATE[42P16]: Invalid table definition: 7 ERROR: multiple primary keys for table "orders" are not allowed (SQL: alter table "orders" add column "order_number" serial primary key not null)
我的代码:
public function up()
{
Schema::table('orders', function (Blueprint $table) {
$last_id = Order::orderBy('id', 'desc')->first()->id;
$table->integer('order_number', true, true)->from($last_id + 10001);
});
foreach (Order::get() as $order) {
$order->update([
'order_number' => 10000 + $order->id
]);
}
}
2条答案
按热度按时间hgqdbh6s1#
不需要在中使用其他参数
仅用于:-
sqserrrh2#
我想我们可以做一个变通的办法让它发挥作用。
我还没有测试过它,但是我觉得它会工作,甚至我觉得,如果我们使用id()作为主键,可能bigIncrements不会被视为主键。
使用模型观察器,在
created()
上,你可以使用id来设置order_number
,或者如果你想在creating
中也这样做,你可以根据最后插入的id来做,这可能是正确的方式。