小编Rob*_*est的帖子

MySQL之前按顺序排序

这里有很多类似的问题,但我认为没有充分回答这个问题.

我会从当前最流行的问题继续,并使用他们的例子,如果这没关系.

此实例中的任务是获取数据库中每个作者的最新帖子.

示例查询产生不可用的结果,因为它并不总是返回的最新帖子.

SELECT wp_posts.* FROM wp_posts
    WHERE wp_posts.post_status='publish'
    AND wp_posts.post_type='post'
    GROUP BY wp_posts.post_author           
    ORDER BY wp_posts.post_date DESC
Run Code Online (Sandbox Code Playgroud)

目前接受的答案是

SELECT
    wp_posts.*
FROM wp_posts
WHERE
    wp_posts.post_status='publish'
    AND wp_posts.post_type='post'
GROUP BY wp_posts.post_author
HAVING wp_posts.post_date = MAX(wp_posts.post_date) <- ONLY THE LAST POST FOR EACH AUTHOR
ORDER BY wp_posts.post_date DESC
Run Code Online (Sandbox Code Playgroud)

不幸的是,这个答案简单明了,并且在很多情况下产生的结果不如原始查询那么稳定.

我最好的解决方案是使用表单的子查询

SELECT wp_posts.* FROM 
(
    SELECT * 
    FROM wp_posts
    ORDER BY wp_posts.post_date DESC
) AS wp_posts
WHERE wp_posts.post_status='publish'
AND wp_posts.post_type='post'
GROUP BY wp_posts.post_author 
Run Code Online (Sandbox Code Playgroud)

我的问题是一个简单的问题: 无论如何在分组之前订购行而不诉诸子查询?

编辑:这个问题是另一个问题的延续,我的情况细节略有不同.您可以(并且应该)假设还有一个wp_posts.id,它是该特定帖子的唯一标识符.

mysql group-by sql-order-by

228
推荐指数
5
解决办法
31万
查看次数

如何为IDE记录magic(_call和_callStatic)方法

在使用notepad ++和sublime编写许多快乐的岁月后,我被建议给PHP IDE一个机会.我正在尝试phpStorm,看起来不错.代码完成和文档是一个很好的功能,但是当使用魔术方法时,对我来说并不奏效.是否有工作让phpStorm了解魔术方法中发生了什么?

我们的情况是这样的:

abstract class a {
    public static function __callStatic($method,$args)
    {
        if(strpos($method,"get_by_") === 0)
        {
            //do stuff
        } elseif(strpos($method,"get_first_by_") === 0) {
            //do stuff
        } elseif($method == "get_all") {
            //do stuff
        }
    }
}

class b extends a {
    // some more stuff
}

b::get_by_user_id(27);
b::get_first_by_id(156);
b::get_all();
Run Code Online (Sandbox Code Playgroud)

神奇的callStatic方法允许我们通过构成函数调用的一个或多个参数来获取对象的集合.

我看到在这些情况下有一个@method语句可用,但phpStorm只是获取了这些语句中的第一个.此外,我只能将返回类型设置为混合,因为我更愿意将其设置为调用它的任何类(在我的示例中为b).

非常感谢任何想法或建议,谢谢.

php documentation docblocks magic-methods phpstorm

77
推荐指数
2
解决办法
3万
查看次数

记录故意切换的最佳方法是什么?

我发现自己处于切换机箱跌落的最佳选择.我的意思是:

switch($bar)
{
    case 0:
        // do something
    case 1:
        // do more
        break;
    //more cases
}
Run Code Online (Sandbox Code Playgroud)

目前我的IDE(phpStorm)正在发出关于坠落的警告.

在phpDoc中是否有一种可接受的方式来记录这种预期的漏洞?

我知道你们中的一些人无疑会说不要这样做,但我赞同这个邪恶的定义,这肯定是"替代品中最不好的".

php phpdoc switch-statement phpstorm

18
推荐指数
1
解决办法
3407
查看次数

MySQL - 在全文搜索中转义&符号(&)

我们正在使用全文搜索来搜索公司的名称,一切顺利,直到我们的公司名称为&符号为"M&S".

SELECT name FROM company WHERE MATCH (name) against ('M&S' IN BOOLEAN MODE);
Run Code Online (Sandbox Code Playgroud)

由于MySQL将&符号视为布尔运算符,因此无法返回任何结果.需要布尔模式,因此不能简单地关闭它.

我正在寻找的是一种逃避&符号的方法,以便MySQL正确处理它并找到记录.

抛弃全文搜索以支持LIKEs也不是一个选择

谢谢你的帮助

mysql full-text-search escaping

16
推荐指数
1
解决办法
8819
查看次数

php中的十进制类型

PHP是否具有十进制(±1.0×10-28到±7.9×1028)数据类型?

php

13
推荐指数
1
解决办法
1万
查看次数

rsync:如何保持选定的目标目录权限?

我想不出的是如何将本地文件同步到远程主机,同时保留特定文件夹/ var/www/site1/home/images的远程文件夹权限,这是750,而源文件夹权限是770.我需要在本地使用此文件夹apache-writable,但它不应该在生产服务器上可写.我需要仅为此文件夹保留目标权限,因为必须更新所有其他文件和文件夹权限.

到目前为止,我正在尝试使用--exclude,-filter但没有达到预期的效果.

rsync -av --delete /var/www/site1/ root@mysite.com:/var/www/site1/
Run Code Online (Sandbox Code Playgroud)

permissions rsync

13
推荐指数
1
解决办法
2万
查看次数

快速实体主义水化器

我正在寻求提高学说水合的速度.我以前一直在使用,HYDRATE_OBJECT但可以看到,在许多情况下,使用它可能会非常繁重.

我知道可用的最快的选项是HYDRATE_ARRAY,然后我提供了使用实体对象的许多好处.在实体方法中存在业务逻辑的情况下,这将被重复,但是由数组处理.

所以我所追求的是更便宜的物体保湿剂.我很高兴以速度的名义做出一些让步并放松一些功能.例如,如果它最终只是被读取,那就没问题了.同样,如果延迟加载不是一件事,那也没关系.

这种事情是存在还是我要求太多?

php object doctrine-orm doctrine-extensions

13
推荐指数
2
解决办法
4585
查看次数

合并数据的数据库架构设计模式

我们有一个相当陈旧的数据库,其中包含大量个人以及他们已完成的一些成就.历史上几乎没有什么可以阻止重复的个人数据,因此我们最终遇到了数据非常脏的情况.可以在此处找到大量简化的版本.

我们现在正在重新设计架构和用户界面.我们将为用户提供将他们的个人合并在一起的工具.在提供的例子中,戴夫和大卫显然是同一个人,总共取得了4项成就.

鉴于用户犯错并且涉及的表比示例中多得多,我正在寻找一种便于数据合并的架构设计,特别是如果(当!)用户不可避免地合并数据犯了一个错误.

某种链接列表似乎是一种解决方案,但对于此用例并不完全有效.还有其他概念可能会适应这种情况吗?任何可能适合的特定设计模式?

编辑:由于SQLFiddle今天相当不稳定,这里是sqlfiddle上的create/insert/select sql:

CREATE TABLE individual
    (`individual_id` int, `forename` varchar(50), `surname` varchar(50))
;

CREATE TABLE achievement
    (`achievement_id` int, `name` varchar(50), `description` varchar(50))
;

CREATE TABLE individual_achievement
    (`individual_id` int,`achievement_id` int)
;

INSERT INTO individual
    (`individual_id`, `forename`, `surname`)
VALUES
    (1, 'Dave', 'Deane'),
    (2, 'David', 'Deane')
;

INSERT INTO achievement
    (`achievement_id`, `name`, `description`)
VALUES
    (1, 'unit_1', 'Unit 1'),
    (2, 'unit_2', 'Unit 2'),
    (3, 'unit_3', 'Unit 3'),
    (4, 'unit_4', 'Unit 4')
;

INSERT INTO individual_achievement
    (`individual_id`,`achievement_id`)
VALUES
    (1, …
Run Code Online (Sandbox Code Playgroud)

merge database-design design-patterns database-schema

9
推荐指数
1
解决办法
528
查看次数

使用xDebug调试SOAP服务

有没有办法调试我们理想地发布的SOAP服务,并集成到IDE中,允许我逐步执行代码.

php soap xdebug

8
推荐指数
1
解决办法
5147
查看次数

TCPDF中的特定字体pdf

有人能告诉我我做错了什么吗?我在TCPDF生成的pdf中需要Arial字体.首先我尝试使用它:1)我从Windows字体caltalog获得Arial并将其放在TCPDF目录中.2)接下来我用脚本写了:

$fontname = $pdf->addTTFfont('../lib/tcpdf/arial.ttf', '', '', 32);
Run Code Online (Sandbox Code Playgroud)

之后在tcpdf/fonts中出现3个文件(arial.ctg.z,arial.php和arial.z).我认为一切都还可以但是如果在TCPDF中我使用这个字体:

$pdf->SetFont('arial', '', 16);
Run Code Online (Sandbox Code Playgroud)

文档中的字体确实是arial但没有特定的波兰语(??????)

我也试过自己准备字体:我下载了ttf2afm和makefontuni.php脚本,然后在命令行中我写了这个:

ttf2ufm -a arial.ttf
php -q makefontuni.php arial.ttf arial.ufm
Run Code Online (Sandbox Code Playgroud)

该命令还给了我3个文件(arial.ctg.z,arial.php和arial.z),但最终情况和以前一样.

我承认写入pdf的所有数据都是UTF-8,TCPDF结构是这样的:

$pdf = new TCPDF(PDF_PAGE_ORIENTATION, PDF_UNIT, PDF_PAGE_FORMAT, true, 'utf-8', false);
Run Code Online (Sandbox Code Playgroud)

我不知道我做错了什么.:(

php pdf utf-8 tcpdf

6
推荐指数
2
解决办法
3万
查看次数