内存表模型

介绍

基于 Swoole Table 跨进程共享内存表的模型。通过注解定义,框架底层自动创建SwooleTable,直接使用模型操作,方便快捷!

模型定义

喜闻乐见的对命名空间、类名无要求,只要按照规定写注解即可!

具体定义看下面代码:

  1. namespace Test;
  2. use Imi\Model\MemoryTableModel;
  3. use Imi\Model\Annotation\Column;
  4. use Imi\Model\Annotation\MemoryTable;
  5. /**
  6. * @MemoryTable(name="test")
  7. */
  8. class MTest extends MemoryTableModel
  9. {
  10. /**
  11. * @Column(name="str",type="string",length=128)
  12. * @var string
  13. */
  14. protected $str;
  15. /**
  16. * @Column(name="int",type="int")
  17. * @var int
  18. */
  19. protected $int;
  20. /**
  21. * @Column(name="float",type="float")
  22. * @var float
  23. */
  24. protected $float;
  25. /**
  26. * Get the value of str
  27. *
  28. * @return string
  29. */
  30. public function getStr()
  31. {
  32. return $this->str;
  33. }
  34. /**
  35. * Set the value of str
  36. *
  37. * @param string $str
  38. *
  39. * @return self
  40. */
  41. public function setStr(string $str)
  42. {
  43. $this->str = $str;
  44. return $this;
  45. }
  46. /**
  47. * Get the value of int
  48. *
  49. * @return int
  50. */
  51. public function getInt()
  52. {
  53. return $this->int;
  54. }
  55. /**
  56. * Set the value of int
  57. *
  58. * @param int $int
  59. *
  60. * @return self
  61. */
  62. public function setInt(int $int)
  63. {
  64. $this->int = $int;
  65. return $this;
  66. }
  67. /**
  68. * Get the value of float
  69. *
  70. * @return float
  71. */
  72. public function getFloat()
  73. {
  74. return $this->float;
  75. }
  76. /**
  77. * Set the value of float
  78. *
  79. * @param float $float
  80. *
  81. * @return self
  82. */
  83. public function setFloat(float $float)
  84. {
  85. $this->float = $float;
  86. return $this;
  87. }
  88. }

需要使用注解将表、字段属性全部标注。并且写上getset方法。

@MemoryTable(name="test") 是指定SwooleTable的名称@Column(name="str",type="string",length=128)中的name代表字段名,type支持string/int/floatstring类型必须设置length

模型操作

查找一条记录

  1. $key = 'abc';
  2. $model = MTest::find($key);

查询多条记录

  1. $list = MTest::select();
  2. // $list 为 MTest[] 类型

保存记录

  1. $model = MTest::newInstance();
  2. $model->__setKey('abc');
  3. $model->setStr('aaa');
  4. $model->setInt(123);
  5. $model->setFloat(4.56);
  6. $model->save();

删除记录

  1. $model = MTest::find('abc');
  2. $model->delete();

批量删除

  1. // 两种方式
  2. MTest::deleteBatch('k1', 'k2');
  3. MTest::deleteBatch(['k1', 'k2']);

统计数量

  1. MTest::count();

获取键

  1. $model = MTest::find('abc');
  2. $model->getKey();

设置键

  1. $model = MTest::find('abc');
  2. $model->__setKey('def');