我想过滤我的数据库中的Null,0或''的某些字段.不幸的是,在IN条件下使用NULL无法返回任何内容......我相信这是由于SQL中的NULL比较评估为UNKNOWN.例如:
$filterField = $this->Model->find('list', array(
'fields' => array('id','name'),
'recursive' => 0,
'conditions' => array('Model.related_string' => array(Null, 0, '')),
'order' => array('Model.name ASC')
)
);
Run Code Online (Sandbox Code Playgroud)
这始终不返回任何错误和零行,因为生成的查询具有SELECT ... WHERE 'Model'.'related_string' IN (NULL, 0, '').但是,如果我想单独OR OR条件,我似乎无法使用PHP的数组语法.我会覆盖这些值.例如:
$conditions['OR'] = array(
'Model.related_string' => array('', 0),
'Model.related_string' => NULL);
Run Code Online (Sandbox Code Playgroud)
失败.这将仅在覆盖"Model.related_string"键的值时搜索NULL条目.我是不是写了两个发现?
如何告诉CPAN Makefile.PL在一个特定的安装中给出一个特定的参数?
特别.我想安装XML::LibXML,并apt-get安装库/usr/lib/libxml2.so.2.6.32.Makefile.PL有问题并告诉我:
using fallback values for LIBS and INC
options:
LIBS='-L/usr/local/lib -L/usr/lib -lxml2 -lm'
INC='-I/usr/local/include -I/usr/include'
If this is wrong, Re-run as:
$ /usr/bin/perl Makefile.PL LIBS='-L/path/to/lib' INC='-I/path/to/include'
looking for -lxml2... no
looking for -llibxml2... no
libxml2 not found
Try setting LIBS and INC values on the command line
Or get libxml2 from
http://xmlsoft.org/
Run Code Online (Sandbox Code Playgroud)
我知道libxml2在哪里,但我不知道怎么告诉它Makefile.PL.
编辑:当我这样做时dpkg -L libxml2(它是一个debian),我明白了
/.
/usr
/usr/lib
/usr/lib/libxml2.so.2.6.32
/usr/share
/usr/share/doc
/usr/share/doc/libxml2
/usr/share/doc/libxml2/AUTHORS
/usr/share/doc/libxml2/changelog.Debian.gz …Run Code Online (Sandbox Code Playgroud) 我尝试从Cython pxd有条件地编译(或生成)到c代码.我读到我可以DEF定义一个值和IF根据它的值有条件地生成,但是如何从pxd文件外部获取此值?
具体来说,这两个案例对我来说很有意义:
谢谢
我最近一直在重复遇到以下情况,要么我需要将MAX()或SUM()应用于表中的一列,但我需要为其他列设置DISTINCT值.
例如,请考虑下表和关联列,这些列表示StackOverflow登录的详细信息.
SoUserLogins(OpenIdToken,Name,IpAdress,LoginTimeStamp,QuestionsAsked)
我可能想要一个包含用户及其上次登录的结果集.
SELECT DISTINCT
OpenIdToken,
MAX(LoginTimeStamp)
INTO #tmpLastLogin
FROM SoUserLogins
GROUP BY OpenIdToken
Run Code Online (Sandbox Code Playgroud)
但是我需要来自其他列的不同值.我将把它包装在一个公用表表达式(CTE)中,因为我将在以后使用它,并且不想要清理另一个临时表.
;WITH tmpLastLogin_CTE AS (
SELECT DISTINCT
SOL.OpenIdToken, SOL.Name, SOL.IpAdress, SOL.QuestionsAsked
TTL.LastLogin
FROM SoUserLogins SOL
JOIN #tmpLastLogin TLL ON SOL.OpenIdToken = TLL.OpenIdToken
)
--Extra SQL using tmpLastLogin_CTE goes here
Run Code Online (Sandbox Code Playgroud)
您可以在上面的代码中将MAX(LoginTimeStamp)更改为SUM(QuestionsAsked),并进行一些额外的调整以查看类似的示例.
我的问题是,是否有更清洁或更优雅的方式来处理这些情况?
我正在使用SQL Server.
此方法搜索第一组单词字符(即:)[a-zA-Z0-9_],返回第一个匹配的组或None出现故障.
def test(str):
m = re.search(r'(\w+)', str)
if m:
return m.group(1)
return None
Run Code Online (Sandbox Code Playgroud)
相同的功能可以改写为:
def test2(str):
m = re.search(r'(\w+)', str)
return m and m.group(1)
Run Code Online (Sandbox Code Playgroud)
这工作原理相同,并且是记录在案的行为; 作为此页中明确指出:
表达式
x and y首先评估x; 如果x为false,则返回其值; 否则,y将评估并返回结果值.
但是,作为一个布尔运算符(它甚至在手册上都这么说),我期望and返回一个布尔值.结果,当我发现(如何)这有效时,我感到很惊讶.
有什么其他用例,和/或这种相当不直观的实现的理由是什么?
过去几个小时我一直坚持这个.我通过乱砍几行来解决这个问题/lib/Varien/Data/Collection/Db.php,但是我宁愿使用正确的解决方案并保持我的核心不受影响.
我需要做的就是获取一个集合并通过两个或多个字段对其进行过滤.说,customer_firstname和remote_ip.这是我的(没有黑客的功能Db.php)代码:
$collection = Mage::getModel('sales/order')->getCollection()->
addAttributeToSelect("*")->
addFieldToFilter(array(array('remote_ip', array('eq'=>'127.0.0.1')),
array('customer_firstname', array('eq'=>'gabe'))), array('eq'=>array(1,2,3)));
Run Code Online (Sandbox Code Playgroud)
有了股票Db.php,我尝试了这个:(样本取自http://magentoexpert.blogspot.com/2009/12/retrieve-products-with-specific.html)
$collection->addFieldToFilter(array(
array('name'=>'orig_price','eq'=>'Widget A'),
array('name'=>'orig_price','eq'=>'Widget B'),
));
Run Code Online (Sandbox Code Playgroud)
但这给了我这个错误:
Warning: Illegal offset type in isset or empty in magento/lib/Varien/Data/Collection/Db.php on line 369
Run Code Online (Sandbox Code Playgroud)
如果我用try/catch包装它,那么它会进入_getConditionSql()并给出这个错误:
Warning: Invalid argument supplied for foreach() in magento/lib/Varien/Data/Collection/Db.php on line 412
Run Code Online (Sandbox Code Playgroud)
有没有人有任何工作,功能代码这样做?我正在运行Magento 1.9(企业版).谢谢!
我使用genstrings正确生成了我的字符串文件.我已经更改了不同语言的本地化字符串.现在,我添加了一些NSLocalizedString()事件,我想在我的所有本地化字符串文件中生成它们.
但是,再次运行genstrings似乎并没有更新我的字符串文件.难道我做错了什么?
我想在 cygwin 中使用 python (2.6.5) ctypes,但我不知道如何加载 dll。
我尝试了各种变体,例如
>>> form ctypes import *
>>> cdll.LoadLibrary("/lib/libcairo.dll.a")
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
File "/usr/lib/python2.6/ctypes/__init__.py", line 431, in LoadLibrary
return self._dlltype(name)
File "/usr/lib/python2.6/ctypes/__init__.py", line 353, in __init__
self._handle = _dlopen(self._name, mode)
OSError: Permission denied
Run Code Online (Sandbox Code Playgroud) 我认为当你将对象传递给Java中的方法时,它们应该是有价值的.
这是我的代码:
public class MyClass{
int mRows;
int mCols;
Tile mTiles[][]; //Custom class
//Constructor
public MyClass(Tile[][] tiles, int rows, int cols) {
mRows = rows;
mCols = cols;
mTiles = new Tile[mRows][mCols];
for (int i=0; i < mRows; i++) {
for (int j=0; j < mCols; j++) {
mTiles[i][j] = new Tile();
mTiles[i][j] = tiles[i][j];
}
}
}
Run Code Online (Sandbox Code Playgroud)
此时,mTiles对象的任何更改都会反映回tiles对象.任何想法如何解决这一问题?
谢谢大家.
如果我运行了几个查询并且ObjectContext填充了实体,如果我不再需要这些实体,如何清除上下文.我知道我需要尽快处理上下文,但在这种情况下,这是不可能的.那么有什么方法可以从上下文中删除这些对象?
python ×2
android ×1
cakephp ×1
conditional ×1
cpan ×1
ctypes ×1
cygwin ×1
cython ×1
distinct ×1
eclipse ×1
genstrings ×1
iphone ×1
java ×1
localization ×1
magento ×1
magento-1.9 ×1
perl ×1
php ×1
sql ×1
sql-server ×1