我一直在寻找解决方案,我希望有人已经解决了这个问题,或者有一些改进的好主意.
我正在使用Laravel 5,我遇到了需要使用新值更新许多行的情况.现在我正在为所有这些行做一个for循环来更新它们,我想优化它,这样我就不会运行很多sql查询.这是一个示例代码:
<?php
//Well, the original code looks better than this, but the concept is the same
$myrows = [0,1,2,3,4,5,6,7,8,9];
$myvalues = [45,543,657,574,234,26457,2462,897,234,89032];
for($i=0;$i<count($myrows);$i++) {
MyClass::where('id', $myrows[$i])->update(['myColumn' => $myvalues[$i]]);
}
?>
Run Code Online (Sandbox Code Playgroud)
显然,这将执行10个查询(相同数量的我想更新的行),但我想只有一个查询要做到这一点,对于优化的目的.我知道能够使用whereIn(...) - > update(...)同时更新许多行,但是使用此方法,您只能将所有行更新为相同的值,而不是像我的那样更新不同的行例.
在此先感谢您的帮助!
我想知道Javascript或jQuery是否有办法删除事件监听器.假设我想创建一个我只想触发一次的函数,例如假设我想要一个按钮来显示文档中的一些隐藏元素,我会创建这个函数(假设隐藏元素有一个hidden隐藏的类他们):
jQuery('#toggler').click(function() {
console.log('Hidden elements are now shown');
jQuery('.hidden').removeClass('hidden');
});
Run Code Online (Sandbox Code Playgroud)
很简单吧?现在,我的实际问题进来了,我不希望jquery每次单击按钮时一次又一次地运行该函数,因为元素已经显示,所以有一个干净的方法吗?所以,在这个例子中多次点击切换器之后,我想只得到一个控制台消息.
我可以做jQuery(this).unbind('click'),但这会导致删除所有触发器,我只想删除当前触发器.
当我面对这样的场景时,我通常会做的就是解决它(这很丑陋,实际上并不会阻止代码执行,但只处理代码的结果):
var toggler_clicked = false;
jQuery('#toggler').click(function() {
if(toggler_clicked) return;
toggler_clicked = true;
console.log('Hidden elements are now shown');
jQuery('.hidden').removeClass('hidden');
});
Run Code Online (Sandbox Code Playgroud)
另外我不想使用jQuery one,因为当我需要有条件地删除触发器时我会遇到同样的问题,所以如果你能帮忙请给我一个动态的答案.
提前致谢 !
我正在使用引导程序,我想知道为容器提供背景的一种干净方法。
我使用的是引导类container,没有container-fluid。Bootstrap文档明确指出我不应该嵌套容器,那么实现此目标的替代方法是什么?如果我将背景设置为container左右空白仍为白色,则我也想给该空间上色,但是我也希望内容以对齐方式container对齐,而不是container-fluid对齐方式。有什么建议么 ?我当前的解决方案是嵌套一个container内部,container-fluid并从第一个中删除填充,但是我想提出一个更好的解决方案,该解决方案不违反引导文档。
提前致谢 !
编辑
例如这是我所拥有的
<div class="container-fluid my-class">
<div class="container">
Some rows and columns here
</div>
</div>
Run Code Online (Sandbox Code Playgroud)
然后我在CSS中覆盖bootstrap的填充
.container-fluid {
padding-left: 0;
padding-right: 0;
}
.my-class {
background: red;
}
Run Code Online (Sandbox Code Playgroud)
但是,就像我说的那样,这是不好的方法。