operate: ‘Between’ 或者 “RANGE” 都试过
model 中 删除 或者修改过
1 2 3 4 5 6 7 8 9 10 |
<span class="hljs-keyword">public</span> <span class="hljs-function"><span class="hljs-keyword">function</span> <span class="hljs-title">getCreateTimeAttr</span>(<span class="hljs-params"><span class="hljs-variable">$value</span>, <span class="hljs-variable">$data</span></span>) </span>{ <span class="hljs-variable">$value</span> = <span class="hljs-variable">$value</span> ? <span class="hljs-variable">$value</span> : (<span class="hljs-keyword">isset</span>(<span class="hljs-variable">$data</span>[<span class="hljs-string">'create_time'</span>]) ? <span class="hljs-variable">$data</span>[<span class="hljs-string">'create_time'</span>] : <span class="hljs-string">''</span>); <span class="hljs-keyword">return</span> <span class="hljs-variable">$value</span>; } <span class="hljs-keyword">protected</span> <span class="hljs-function"><span class="hljs-keyword">function</span> <span class="hljs-title">setCreateTimeAttr</span>(<span class="hljs-params"><span class="hljs-variable">$value</span></span>) </span>{ <span class="hljs-keyword">return</span> <span class="hljs-variable">$value</span>; } |
最后的查询条件还是 WHERE ( create_time
BETWEEN ‘1608691388’ AND ‘1608691388’ ) 时间戳格式的
最后在 thinkphp\library\think\db\Builder.php 的 parseDateTime 方法中做修改 大概504行
1 2 3 4 5 6 7 8 9 10 11 |
//判断是否为时间格式的字符串 if (is_string($value)) { $timestamp = strtotime($value); if ($timestamp !== false) { if (preg_match('/^\d{4}-\d{2}-\d{2} \d{2}:\d{2}:\d{2}$/', $value)) { $value = date('Y-m-d H:i:s', $timestamp); } else { $value = $timestamp; } } } |