@@ -103,16 +103,36 @@ private ?string $name = null;
103
103
#[ORM\Column(name:"content", type:"text", nullable:true, options:["comment" => "长文本"])]
104
104
private ?string $content = null;
105
105
106
+ //外键-多对一
107
+ #[ORM\ManyToOne(targetEntity:"App\Entity\UserAuth")]
108
+ #[ORM\JoinColumn(name:"user_auth_id", referencedColumnName:"id")]
109
+ private ?UserAuth $userAuth = null;
110
+
111
+ //外键-一对一
112
+ #[ORM\OneToOne(targetEntity:"App\Entity\UserAuth")]
113
+ #[ORM\JoinColumn(name:"user_auth_id", referencedColumnName:"id")]
114
+ private ?UserAuth $userAuth = null;
115
+
106
116
#[ORM\Column(name:"sort_value", type: "integer", options: ["comment" => "排序值"])]
107
117
private int $sortValue = 0;
108
118
109
119
#[ORM\Column(name:"status", type: "smallint", options: ["comment" => "状态"])]
110
120
private int $status = 0;
111
121
122
+ #[ORM\Column(name: "amount", type: "decimal", precision: 10, scale:2, nullable: true, options: ["comment" => "价格"])]
123
+ private ?string $amount = null;
124
+
125
+ #[ORM\Column(name: "amount", type: "decimal", precision: 10, scale:2, nullable: true, options: ["comment" => "价格"])]
126
+ private ?string $amount = null;
127
+
112
128
//_存储格式为:123,123,123_
113
129
#[ORM\Column(name: "tags", type: "simple_array", nullable: true, options: ["comment" => "标记集合"])]
114
130
private ?array $tags = [];
115
131
132
+ //储存格式为对象序列化之后的结果,检索能力较差
133
+ #[ORM\Column(name: "files", type: "array", nullable: true, options: ["comment" => "文件集"])]
134
+ private ?array $files = [];
135
+
116
136
#[ORM\Column(name:"is_del", type: "smallint", options: ["comment" => "是否删除", "default" => 0])]
117
137
private int $isDel = 0;
118
138
@@ -132,126 +152,17 @@ private ?\DateTime $time = null;
132
152
#[ORM\Column(name: "create_at", type: "datetime", options:["comment" => "创建时间"])]
133
153
private ?\DateTime $createAt = null;
134
154
```
135
-
136
- 6 . smallint
137
-
138
- ``` php
139
-
140
- const STATUS_COMPLETE = 1;
141
-
142
- const STATUS_CANCEL = 2;
143
-
144
- const STATUS_REFUND = 3;
145
-
146
- const STATUS_PAYMENT = 4;
147
-
148
- public static function getStatusArray()
149
- {
150
- return [
151
- self::STATUS_COMPLETE => '已完成',
152
- self::STATUS_CANCEL => '已取消',
153
- self::STATUS_REFUND => '已退款',
154
- self::STATUS_PAYMENT => '已支付'
155
- ];
156
- }
157
-
158
- /**
159
- * @var integer
160
- *
161
- * @ORM\Column(name="status", type="smallint", options={"comment":"订单状态"})
162
- */
163
- private $status;
164
- ```
165
-
166
- _简单选项在表的头部定义成常量,并且设置读取全部的静态方法。_
167
-
168
- 7. simple_array(简单数组)
169
-
170
- ```php
171
- /**
172
- * @var array
173
- *
174
- * @ORM\Column(name="tags", type="simple_array", options={"comment":"标签"})
175
- */
176
- private $tags;
177
- ```
178
-
179
- _ 存储格式为:123,123,123_
180
-
181
- 8 . array
182
-
183
- ``` php
184
- /**
185
- * @var array
186
- *
187
- * @ORM\Column(name="files", type="array", options={"comment":"文件集合"})
188
- */
189
- private $files;
190
- ```
191
-
192
- _ 储存格式为对象序列化之后的结果,检索能力较差_
193
-
194
- 9 . double
195
-
196
- ``` php
197
- /**
198
- * @var string
199
- *
200
- * @ORM\Column(name="lon", type="decimal", precision=10, scale=6, options={"comment":"经度"})
201
- */
202
- private $lon;
203
-
204
- /**
205
- * @var string
206
- *
207
- * @ORM\Column(name="lat", type="decimal", precision=10, scale=6, options={"comment":"纬度"})
208
- */
209
- private $lat;
210
-
211
- /**
212
- * @var string
213
- *
214
- * @ORM\Column(name="amount", type="decimal", precision=10, scale=2, nullable=true, options={"comment":"价格"})
215
- */
216
- private $amount;
217
- ```
218
-
219
- 10 . 外键
220
-
221
- ** 多对一**
222
- ``` php
223
- /**
224
- * @var User
225
- *
226
- * @ORM\ManyToOne(targetEntity="App\Entity\User")
227
- * @ORM\JoinColumn(name="user_id", referencedColumnName="id")
228
- */
229
- private $user;
230
- ```
231
-
232
- **一对一**
233
- ```php
234
- /**
235
- * @var User
236
- *
237
- * @ORM\OneToOne(targetEntity="App\Entity\User")
238
- * @ORM\JoinColumn(name="user_id", referencedColumnName="id")
239
- */
240
- private $user;
241
- ```
242
155
243
156
## 新特性-表外字段
244
157
245
158
_ 这是PHPZlc独有的特性,可以将子查询Sql定义为字段,使其可以具有编程性,实现了Sql集中管理,提高了使用效率。_
246
159
247
160
_ 该字段在数据库中不对应具体的实际字段,所以称为** 表外字段** 。在实际使用中,除了不能进行写相关的操作,其他部分和表内其他字段基本无差别。_
248
161
249
- ```php
250
- /**
251
- * @OuterColumn(name="site_domains", type="simple_array", sql="(SELECT GROUP_CONCAT(sd.site_domain) FROM site_domain sd WHERE sd.site_id = sql_pre.id), options={"comment":"站点域名"}")
252
- */
253
- public $siteDomains;
254
- ```
162
+ ``` php
163
+ #[OuterColumn(name: "role_string", type: "string", sql: "(IF(sql_pre.is_super = 1,'超级管理员', (select GROUP_CONCAT(r.name) from role r where id in (select role_id from user_auth_role uar where uar.user_auth_id = sql_pre.user_auth_id))))", options: ["comment" => "是否超级管理员"])]
164
+ private ?string $roleString = null;
165
+ ```
255
166
256
167
1 . 语法注解
257
168
@@ -267,10 +178,10 @@ private ?\DateTime $createAt = null;
267
178
268
179
2 . 高级用法
269
180
270
- ** 支持` @ AddRule` 注释,利用规则注释可以为其成功执行提供必要的保证 。**
181
+ ** 支持` #[ AddRule()] ` attribute,利用规则注释可以为其成功执行提供必要保证 。**
271
182
272
183
``` php
273
- @ AddRule(name= "id", value="1")
184
+ #[ AddRule(name: "id", value: 1)]
274
185
```
275
186
276
187
_ 具体更多的知识,可以通过学习[ 高级查询-规则章节] ( /phpzlc/repository/rule/index.markdown ) 来了解。_
@@ -280,18 +191,22 @@ private ?\DateTime $createAt = null;
280
191
正常情况下,子查询的sql是固定不变的。但是有些情况下,子查询的Sql需要传入变量才可以正常的工作。这时候我们可以通过Sql重写解决。
281
192
282
193
``` php
283
- /**
284
- * @OuterColumn(name="distance", type="string", sql="repository内重写", options={"comment":"距离"})
285
- */
286
- public $distance;
194
+ #[OuterColumn(name: "distance", type: "string", sql: "repository内重写", options: ["comment" => "距离"])]
195
+ private ?string $distance = null;
287
196
```
288
197
289
198
_ 具体更多的知识,可以通过学习[ 规则-高级用法] ( /phpzlc/repository/rule/advanced-usage.markdown#定义新规则重写规则 ) 来了解。_
290
199
291
200
## 表加索引
292
201
293
202
``` php
294
- @ORM\Table(name="sms_record", options={"comment"="短信动态码"}, indexes={@ORM\Index(name="phone", columns={"phone"})})
203
+ use use Doctrine\ORM\Mapping\Index;
204
+
205
+ #[ORM\Table(
206
+ name: "admin",
207
+ indexes: [new Index(name: 'name', columns: ['name'])],
208
+ options:["comment" => "管理员表"],
209
+ )]
295
210
```
296
211
297
212
0 commit comments