小编Don*_*ulo的帖子

MySQL的最佳实践问题:按ID或日期排序?

这是一个无聊的问题,但是我从来没有得到过直接的回答.

假设我有一个包含以下字段和值的数据库表:

| id | date_added          | balance |
+------------------------------------+
|  1 | 2009-12-01 19:43:22 | 1237.50 |
|  2 | 2010-01-12 03:19:54 |  473.00 |
|  3 | 2010-01-12 03:19:54 | 2131.20 |
|  4 | 2010-01-20 11:27:31 | 3238.10 |
|  5 | 2010-01-25 22:52:07 |  569.40 |
+------------------------------------+    
Run Code Online (Sandbox Code Playgroud)


这是一个非常基本的"会计"子系统.我想获得最新的余额.该id字段设置为auto_increment.通常,我会使用:

SELECT balance FROM my_table ORDER BY date_added DESC LIMIT 1;

但我需要确保返回的值是最新的...(参见上面的id#2和3)

1)我会更好地使用:

SELECT balance FROM my_table ORDER BY id DESC LIMIT 1;

2)或者这是一个更好的解决方案?:

SELECT …

mysql sql-order-by

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

VS Code 不显示更改并且暂存文件显示为空白

在某些时候,我的 VS Code 开始出现一个问题,即查看更改时将以前的版本显示为空白 - 就像您会看到它是否是一个新的未跟踪文件一样。这以前总是显示正确的信息。如果我运行git diff <filename>,它会显示正确的数据,但 VS Code 将其显示为:

对于以前的版本,VS Code 更改为空白

除此之外,当我暂存更改然后单击文件以查看更改时,两个窗格上都不会显示任何内容:

对于当前版本和以前的版本,VS Code 更改均为空白

据我所知,我没有对我的计算机进行任何更改(除了一些 Windows 更新)。

我最近做的唯一一件事就是安装 Ruby 和另一个 Git 插件,但这比这些问题要晚得多。

我试过了:

  • 禁用和重新启用内置 Git 扩展
  • 从映射 (S:) 驱动器和 UNC 路径打开文件
  • 禁用/删除/重新安装所有扩展
  • 创建新文件和目录
  • 检查/取消检查 diff 和 SCM 设置
  • 按照如何完全卸载VS Code 卸载并重新安装 VS Code 以及卸载后未删除的所有其他文件夹

我无法访问另一个存储库,否则我接下来会尝试。我完全被难住了,感谢您提供的任何帮助。提前致谢。

编辑: 我仅使用我的 Microsoft 登录名(而不是我们的域凭据)在计算机上创建了一个新的本地管理员帐户,然后从 GitHub 克隆了一个存储库。它显示了所有更改并按预期运行。所以我不确定这是否是我现在的用户帐户或存储库的问题。如果有任何关于我还可以尝试的建议,我将不胜感激!

编辑:我已经在本地、映射的网络驱动器上创建了一个新存储库,也直接通过 UNC 创建了一个新存储库,所有这些都工作得很好(从我的域登录帐户)。据我所知,目前这似乎是回购协议的一个问题。

git visual-studio-code

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

问题使用Ext的update()而不是dom.innerHTML

我有一个关于使用Extjs的update()方法的性能,可靠性和最佳实践方法的问题,而不是直接更新Ext元素的dom的innerHTML.

考虑两个陈述:

Ext.fly('element-id').dom.innerHTML = 'Welcome, Dude!';
Run Code Online (Sandbox Code Playgroud)

Ext.fly('element.id').update('Welcome, Dude!', false);
Run Code Online (Sandbox Code Playgroud)

我不需要eval()任何脚本,我确信这update()会考虑任何浏览器怪癖.


此外,有谁知道如果使用:

Ext.fly('element-id').dom.innerHTML
Run Code Online (Sandbox Code Playgroud)

是相同的

d.getElementById('element-id').innerHTML
Run Code Online (Sandbox Code Playgroud)


浏览器和平台兼容性很重要,如果两者基本相同,那么Ext.element.dom.innerHTML完全update()放弃可能是我最好的解决方案.

在此先感谢您的帮助,

布赖恩

extjs innerhtml

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

如何刷新Ext.tree.treePanel中节点的内容?

我有一个Ext TreePanel,我正在尝试添加一些服务器端分页.我们正在使用Ext 2.2.0.

我们有一个只有两层的自定义树.我们列出树本身下的25个项目(根?),但每个项目节点可以有无限量的子项.我猜这些是"叶子".项目节点使用自定义uiProvider,所有子项都使用.

我已经为prev/next页面添加了一些图像,itemNodeUI并添加了处理程序,这些处理程序使用pageNumber更新项目节点的属性.在DataUrlPHP文件抓住这些属性和基本附加LIMIT到SQL查询.

一切都按预期工作,除非您单击下一个/上一个图像,项目节点将折叠.如果你扩展节点,一切都应该是,但我要么节点要保持扩展,要么在加载后自动重新扩展.我已经尝试使用expand(),fireEvent('expand'),expandChildNodes,整个九码.没有.


这是单击"上一页"按钮时调用的函数:

    onPaginationPrevButtonClick: function(e,t) {
        var parentEl = Ext.get(t).findParentNode('.x-tree-node-ct', 10, false).previousSibling;
        var treeNodeId = parentEl.getAttribute('ext:tree-node-id');
        var treeNode = this.tree.getNodeById(treeNodeId);
        var currentPage = parseInt(treeNode.attributes.pageNumber);

        if (currentPage > 0) {
            treeNode.attributes.pageNumber = currentPage - 1;
        }

        treeNode.getLoader().load(treeNode);
    }
Run Code Online (Sandbox Code Playgroud)



我遇到的另一个问题是,当调用上述函数时itemNodeUI,扩展的TreeNodeUI内容不会被"刷新".因此,显示正在显示多少结果的文本不会从第一页更改.有没有办法刷新这个节点并让它扩展,而不重新加载整个树?


如果有更好或更简单的方法我应该这样做,我感谢您的任何输入.我是Ext.NEWB,所以我所做的每件事都是'黑客'.;)


编辑:

我几乎不好意思承认这一点,但我完全能够通过使用treeNode.reload()而不是重新load()加载加载器本身来解决崩溃问题.叹...

treeNode.getLoader().load(treeNode);
Run Code Online (Sandbox Code Playgroud)

本来应该:

treeNode.reload();
Run Code Online (Sandbox Code Playgroud)


但是,我仍然需要弄清楚如何刷新节点本身,以便显示结果的文本和prev/next按钮正确显示.我尝试过使用:

treeNode.parentNode.reload();
Run Code Online (Sandbox Code Playgroud)

......但所有这一切都是刷新整棵树.我只想更新itemNode本身.有什么想法吗?


提前谢谢了!

javascript extjs

6
推荐指数
1
解决办法
9789
查看次数

最佳实践:使用jQuery通过id或类选择?

假设DOM中的每个元素都有自己唯一的类名:

  1. 在使用jQuery选择DOM中的元素时,使用ID与类名称是否更好?

  2. 在jQuery中使用one over other时是否有任何性能优势?

我被告知传统上通过ID而不是通过类获取DOM元素要快得多,通常是更好的做法,但这也适用于jQuery吗?

提前谢谢了!

dom jquery-selectors

6
推荐指数
1
解决办法
1280
查看次数

将函数参数重新声明为变量?

我似乎无法在“网络”上的任何地方找到答案...

将函数参数重新声明为局部变量是否有任何原因、优点或缺点?

例子:

function(param1, param2) {
  var param1, param2;
  ...etc...
}
Run Code Online (Sandbox Code Playgroud)

对我来说似乎非常多余,但也许我错过了一些东西......?

谢谢,

布赖恩

javascript variables function

4
推荐指数
1
解决办法
1536
查看次数

Kohana 3 ORM find_all()返回所有行,而不管where子句

我有一个简单的users表,我想找到所有用户email_notifications= 1.

逻辑规定以下内容应该有效:

class Controller_Test extends Controller {

    public function action_index()
    {
        $user = ORM::factory('user');
        $user = $user->where('email_notifications', '=', 1);
        $total = $user->count_all();
        $users = $user->find_all();

        echo $total." records found.<br/>";

        foreach ($users as $v)
        {
            echo $v->id;
            echo $v->first_name;
            echo $v->last_name;
            echo $v->email;
        }
    }
}
Run Code Online (Sandbox Code Playgroud)


然而,正在发生的事情是我从数据库中恢复了所有用户,而不仅仅是打开了email_notifications的用户.有趣的是,$total返回的值是此查询的准确数字结果.

我很难过,我不知道这里有什么问题.如果有人可以发光,我真的很感激.

谢谢,
Brian

kohana-3 kohana-orm

4
推荐指数
1
解决办法
5366
查看次数

未加入Kohana 3.1 ORM的表格

我如何让它工作?

$stuff = ORM::factory('mytable')
    ->with('user')
    ->with('other_stuff')
    ->find_all();
Run Code Online (Sandbox Code Playgroud)

我已经建立了所有关系,当我做其他查询时,一切似乎都在起作用.但是,在上面的查询中,它没有将表用户连接到mytable.我想这可能是因为一个mytable可能有很多用户.

在引用中有一个方法叫做join()我认为我可能需要在这里使用,但它们没有提供任何信息,我在这里搜索的东西不起作用.

当我尝试使用join而不是with,它尝试加入表,但它不包括任何"加入"信息,只是给出一个空().

我知道我的ORM数据库关系都设置正确,所以我有点困惑.

kohana-3 kohana-orm

4
推荐指数
1
解决办法
3504
查看次数

Kohana 3.1 ORM:如何制作'where ... in'条款

感谢Kohana的出色文档,我不得不求助于自己.;)

希望这很简单:我正在尝试收集属于某组ID的所有故事.我的代码如下:

$story_ids = '(12,56,99,213,319)';
$stories = ORM::factory('story')->where('id', 'IN', $story_ids)->find_all();
Run Code Online (Sandbox Code Playgroud)

但是,这显然不起作用.我收到MySQL错误,因为单引号被放在$story_ids查询中的字符串周围.

编辑:我也试过传递$story_ids作为一个数组,但后来我得到一个"500内部服务器错误"

有可能做我要问的事吗?

提前致谢.

kohana-3 kohana-orm

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

排除两个字段不具有特定值的结果

我有两个表,其中存储了一些事务性的东西.user_id每个表中每个都有很多记录.表1和表2具有彼此一对一的关系.我想从两个表中提取记录,但我想排除在两个表中都有某些值的记录.我不在乎他们是否都没有这些值,或者只是一个,但两个表都不应该同时具有这两个值.

例如:

SELECT t1.id, t1.type, t2.name
  FROM table1 t1
  INNER JOIN table2 t2 ON table.xid = table2.id
  WHERE t1.user_id = 100
  AND (t1.type != 'FOO' AND t2.name != 'BAR')
Run Code Online (Sandbox Code Playgroud)


所以t1.type是类型ENUM与约10个不同的选项,t2.name也输入ENUM有2个选项.

我的预期结果看起来有点像:

1, FOO, YUM
2, BOO, BAR
3, BOO, YUM
Run Code Online (Sandbox Code Playgroud)

但相反,我得到的只是:

3, BOO, YUM
Run Code Online (Sandbox Code Playgroud)

它似乎过滤掉所有以'FOO'为类型,'BAR'为名称的记录.

(我们正在使用MySQL 5.1 ...)

mysql sql

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