使用PHP和MySQL,我想查询我的用户发布的帖子表,以找到发布最多条目的人.
对此有什么正确的查询?
样本表结构:
[id] [UserID] 1 johnnietheblack 2 johnnietheblack 3 dannyrottenegg 4 marywhite 5 marywhite 6 johnnietheblack
我希望看到"johnnietheblack"是顶级海报,"marywhite"排名第二,"dannyrottenegg"排名第二
我有一个我正在构建的自动MVC框架,到目前为止已经设法避免了任何AJAX调用的需要.但是,现在,我想创建一个实时更新Feed.
我的问题是,ajax调用的处理程序通常存储在MVC中?我应该将它们存储在与拨打电话有关的同一个控制器中吗?
例如,如果我的域名www.example.com/browse/blogs(浏览是控制器,博客就是方法)正在为更新的博客列表进行AJAX调用,那么电话会仅限于www.example.com/ browse/update_list还是什么?
或者,它是一个单独的AJAX控制器?www.example.com/ajax/update_blogs
你怎么做呢?
我想在几页上使用缓存:
然而,在设计我的系统后,我意识到我的页面标题会根据状态略有变化(例如,如果您已登录,则会显示"Hello,johnnie @ example.com"之类的内容).因此,我想确保它不会意外地显示错误的用户名或电子邮件.
遗憾的是,我想不在页面上缓存的这么小的东西应该迫使我在我的网站上什么都不缓存.
我怎么能绕过这个?
一个实体(比如一个UserEntity)对它的属性有严格的规则,它可以存在于两个状态 - 持久化(这意味着它有一个id)和预先持久化(这意味着它还id没有).
根据关于如何处理所需属性的这个问题的答案,只有id传入其构造函数才能创建"真正的"UserEntity .
但是,当我需要创建new UserEntity浏览器发送的信息时,我需要能够在持久保存到数据库之前验证信息.
在过去,我只是创建一个空白的UserEntity(没有id),设置新的属性,并验证它 - 但是,在这个新的,更安全的方式思考实体,我不应该创建一个新的UserEntity没有它的id.
我不想创建两个知道如何验证我的UserEntity属性的地方,因为如果他们改变(他们会),它将是更新代码的两倍,并使错误的机会增加一倍.
如何有效地集中我的实体属性的验证知识?
注意
我有一个想法反映在这个问题中,其中我考虑将非状态属性(如电子邮件,密码和名称)存储在标准化值对象中,该对象将了解其属性的规则,即不同的服务,如Controller,Validator,和Repo,或Mapper可以使用.
当你有一个实体,比如UserEntity,谁的id属性是从数据库中的主键派生出来的 - 你应该提供一个setter方法,比如setId()?
一些反对的论点:
id但不同的属性.(如果我从数据库中提取3个不同的用户并将其id值设置为相同)一些论点:
id在构造函数中使用a实例化UserEntity (因为它有一个setter方法),我可以使用UserEntity对象的方法和临时/假/新用户值...而不必先保留它.提供一个setter(并且不强制id在构造函数中),或者id在构造函数中强制一个,并删除setter?
在设置MySQL/ElasticSearch组合时,最好是:
将所有模型信息完全同步到ES(甚至是非搜索数据),以便在找到结果时,我可以方便地获取所有信息.
只同步可搜索的字段,然后当我得到结果时,使用该id字段在MySQL数据库中查找实际数据?
我正在为我的网站构建一个小搜索功能.我正在接受用户的查询,产生关键字,然后针对词干关键字运行全文MySQL搜索.
问题是MySQL正在将词干视为字面意思.这是正在发生的过程:
如何使用全文来完成LIKE'basbal%'的等效操作?
编辑:
这是我目前的查询:
SELECT MATCH (`title`,`body`) AGAINST ('basebal') AS `relevance`,`id` FROM `blogs` WHERE MATCH (`title`,`body`) AGAINST ('basebal') ORDER BY `relevance` DESC
Run Code Online (Sandbox Code Playgroud) 我正在设置一个远程仓库,需要同时存放我的代码的暂存版本和代码的生产版本(每个分支将部署到他们指定的服务器进行测试/生产).
我想只允许将更改从本地计算机推送到远程登台分支,然后当我们确定登台分支是好的时候,我们可以将登台分支合并到生产分支中,然后从那里部署.
基本上,像:
是否有可能以这种方式管理远程回购?如果是这样的话?
另外,有更好的方法吗?
我的应用程序是从具有内容类型"application/octet-stream"的移动设备发送给它的图像.
我需要使用GD库处理这些图像,这意味着我需要能够从数据中创建图像对象.
通常情况下,我一直在使用imagecreatefromjpeg,imagecreatefrompng,imagecreatefromgif等来处理从Web表单上传的文件,但是当我作为application/octet-stream来找我时这些似乎不起作用.
关于如何实现目标的任何想法?
编辑
这是我用来创建图像标识符的代码...我的处理程序在我的网站中运行得很好,我在网站和iOS数据之间的唯一区别就是内容类型
public function open_image($path) {
# JPEG:
$im = @imagecreatefromjpeg($path);
if ($im !== false) { $this->image = $im; return $im; }
# GIF:
$im = @imagecreatefromgif($path);
if ($im !== false) { $this->image = $im; return $im; }
# PNG:
$im = @imagecreatefrompng($path);
if ($im !== false) { $this->image = $im; return $im; }
$this->error_messages[] = "Please make sure the image is a jpeg, a png, or a gif.";
return false;
}
Run Code Online (Sandbox Code Playgroud) 我的 Web 应用程序将有两种 100% 不同的用户 - 在网站的领域、功能和目的上。一类用户的目的是发布博客,而另一类用户的目的是阅读博客并“关注”海报。
他们唯一的共同点是需要 ID、电子邮件、密码和其他一些元数据,例如加入日期等。
我应该尝试从同一个帐户表中提取它们,还是为每个表制作一张表?
笔记
- 需要考虑的一个潜在问题是,为了防止用户混淆,我认为这两种帐户之间的电子邮件应该是唯一的。
- 除了正常的“帐户”元数据之外,读者和作者将需要存储不同的数据集。