RedBean ORM ID列

时间:2015-07-24 11:42:22

标签: php redbean

有没有办法使用RedBean PHP手动设置新bean的DECLARE @startT DATETIME = Cast('19:00:00' AS TIME), @endT DATETIME = Cast('11:00:00' AS TIME); DECLARE @result INT = Datediff(mi, @startT, @endT); DECLARE @t1 DATETIME = Cast('08:00:00' AS TIME),--work @t2 DATETIME = Cast('10:00:00' AS TIME),--break @t3 DATETIME = Cast('10:15:00' AS TIME),--w @t4 DATETIME = Cast('12:40:00' AS TIME),--b @t5 DATETIME = Cast('13:25:00' AS TIME),--w @t6 DATETIME = Cast('16:30:00' AS TIME),--b @t7 DATETIME = Cast('16:45:00' AS TIME),--w @t8 DATETIME = Cast('18:15:00' AS TIME); --b IF Datediff(mi, @startT, Cast('18:00:00' AS TIME)) < 0 --I have assumed the employee cannot come before six for the night shift BEGIN SET @result = @result + 1440; IF (( @endT >= @t3 )) SET @result = @result - Datediff(mi, @t2, @t3) IF (( @endT >= @t5 )) SET @result = @result - Datediff(mi, @t4, @t5) IF (( @endT >= @t7 )) SET @result = @result - Datediff(mi, @t6, @t7) END ELSE BEGIN IF ((@startT <= @t2 AND @endT >@t2) AND (@startT < @t3 AND @endT >= @t3)) SET @result = @result - DATEDIFF(mi, @t2, @t3) IF ((@startT <= @t4 AND @endT >@t4) AND (@startT < @t5 AND @endT >= @t5)) SET @result = @result - DATEDIFF(mi, @t4, @t5) IF ((@startT <= @t6 AND @endT >@t6) AND (@startT < @t7 AND @endT >= @t7)) SET @result = @result - DATEDIFF(mi, @t6, @t7) END SELECT @result --SELECT RIGHT('0' + CAST((@result / 60) % 60 AS VARCHAR),2) + ':' + --RIGHT('0' + CAST(@result % 60 AS VARCHAR),2)?我存储了来自API的缓存数据,该API生成每行的ID,并且为了简单起见,我只想使用ID

我已经阅读了其他线索,只是想创建一个新列(ID)或其他内容,但我想只使用生成的唯一row_id作为{ {1}}。

2 个答案:

答案 0 :(得分:0)

根据MySQL doc

  

没有为AUTO_INCREMENT列指定值,因此MySQL   自动分配序列号。你也可以明确地说   为列指定0以生成序列号。如果列是   声明 NOT NULL ,也可以为列分配NULL   生成序列号。当您插入任何其他值时   AUTO_INCREMENT列,该列设置为该值和   序列被重置,以便下一个自动生成的值   从最大的列值顺序跟随。

如果这是真的,在RedBean中你可以做类似

的事情
$post = R::dispense('post');
$post->id = 234;
R::store($post);

我没有对此进行测试,因为我将自动增量列设置为整数 默认为0 ,这会自动递增。

答案 1 :(得分:0)

我做了redbean的修改版本,它允许你使用另一个字段作为主键(带自动增量) https://github.com/freelanceniek/redbeanx