【问题标题】:Use two columns auto increment ( laravel 4.1)使用两列自动递增(laravel 4.1)
【发布时间】:2015-10-05 23:17:10
【问题描述】:

我有这些表

Hotels:
id = auto increment
name_hotel = text
....

Rooms:
id = auto increment
id_room = auto increment (just in same hotel)
hotel_id = integer
...

在房间表中,我有三列(id = 自动增量,id_room = 我想让此列自动增加,但仅在 1 家酒店中,每家酒店添加房间的 id_room 将为 1、2、3、4)

例子:

id            id_room              hotel_id
1             1                    4
2             2                    4
3             3                    4
4             1 (start again)      5(new hotel)
5             4                    4
6             2                    5

可以在 laravel 模型 Eloquent 中实现

【问题讨论】:

    标签: php laravel laravel-4 eloquent


    【解决方案1】:

    好吧,如果您在插入数据时知道酒店 ID,那么您可以将id_room 设置为比该酒店的最高 ID 房间大一。

    首先,从id_room 中删除自动增量。自动增量旨在与主键或 ID 应始终递增的行一起使用。尝试重置计数器从来都不是一个好主意,据我所知,Laravel 没有给你这个选项。但是通过删除auto_increment,我们可以自己创建一个来满足您的需求。

    为此,我们可以使用 Eloquent 选择max(id_room) where hotel_id=?

    $id = 4; // or whatever ID you are inserting
    $current_id = DB::table('rooms')->where('hotel_id', $id)->max('id_room');
    

    然后,只需在插入数据时在 current_id 中添加一个

    $row = DB::table('rooms')->insert(
        ['id_room' => $current_id + 1, 'hotel_id' => $id];
    );
    

    【讨论】:

      猜你喜欢
      • 2017-06-17
      • 2019-12-08
      • 2016-03-07
      • 1970-01-01
      • 2012-04-10
      • 2014-04-15
      • 1970-01-01
      • 2013-03-01
      • 2014-09-16
      相关资源
      最近更新 更多