我们说我有一个如下数组(ID => Type):
$contentIndexes = [
32 => 'news',
40 => 'blog',
68 => 'blog',
109 => 'document',
124 => 'news'
]
以下数据库表:
CREATE TABLE `ContentIndex` (
`ID` INT(11) NOT NULL AUTO_INCREMENT,
`ItemID` INT(11) NOT NULL,
`ItemType` VARCHAR(50) NOT NULL COLLATE 'utf8_unicode_ci',
//...
);
如何根据' ItemID'的组合检索每个ContentIndex
?和' ItemType'列(最好只有一个查询)。
使用WHERE IN
不是一种选择,因为它不会考虑这种组合:
ContentIndexQuery::create()
->filterByItemID(array_keys($contentIndexes))
->filterByItemType($contentIndexes)
->find();
有什么想法吗?
答案 0 :(得分:1)
我不知道Propel语法,但基本的SQL语法是OR
。
WHERE ((ItemID = 32 AND ItemType = 'news')
OR
(ItemID = 40 AND ItemType = 'blog')
OR
(ItemID = 68 AND ItemType = 'blog')
OR
(ItemID = 109 AND ItemType = 'document')
OR
(ItemID = 124 AND ItemType = 'news')
)
答案 1 :(得分:0)
对于将来遇到此问题的任何Propel用户,这就是我在Barmar所说的创建查询时提出的:
$scope.search_posts = function() {
if ( !angular.isUndefined($scope.searchText) && $scope.searchText.length > 2 ) {
$scope.searchText = '';
$scope.show_search_box = false;
$ionicTabsDelegate.select($ionicTabsDelegate.selectedIndex() + 1);
} else {
$ionicLoading.show({ template: 'You must write at least 3 characters long.', noBackdrop: false, duration: 2000 });
}
}