Magento 2: addAttributeToFilter not returning any results
When I use addAttributeToFilter
on MagentoCatalogModelResourceModelProductCollectionFactory, with a custom attribute, I always get 0 results.
use MagentoCatalogModelResourceModelProductCollectionFactory;
use MagentoCatalogModelProductRepository;
use MagentoFrameworkApiSearchCriteriaBuilder;
...
$collection = $this->productCollection->create()
->addAttributeToSelect(array('custom_attribute','sku'))
->addAttributeToFilter('custom_attribute',['lt' => 1]);
}
echo count($collection); //Returns 0
I also tried to use the search criteria object as Konrad Siamro sugested:
$search_criteria = $this->searchCriteriaBuilder
->addFilter('custom_attribute', 1, 'lt')
->create();
$collection = $this->productRepository->getList($search_criteria);
echo $collection->getTotalCount(); //returns 0
But the results are the same. It works fine if I filter on a SKU, but my custom attribute returns nothing. I also tried adding the attribute to the flat product database and re indexing.
Update: Added code I used to create the attribute:
$eavSetup->addAttribute(
MagentoCatalogModelProduct::ENTITY,
'custom_attribute',
[
'type' => 'int',
'backend' => '',
'frontend' => '',
'frontend_class' => 'validate-digits',
'label' => 'Custom Attribute',
'input' => 'text',
'class' => 'class',
'source' => '',
'global' => MagentoEavModelEntityAttributeScopedAttributeInterface::SCOPE_GLOBAL,
'visible' => true,
'required' => false,
'user_defined' => false,
'default' => '',
'searchable' => false,
'filterable' => false,
'comparable' => false,
'visible_on_front' => true,
'used_in_product_listing' => true,
'unique' => false,
'apply_to' => ''
]
);
magento2 product-collection eav
bumped to the homepage by Community♦ yesterday
This question has answers that may be good or bad; the system has marked it active so that they can be reviewed.
add a comment |
When I use addAttributeToFilter
on MagentoCatalogModelResourceModelProductCollectionFactory, with a custom attribute, I always get 0 results.
use MagentoCatalogModelResourceModelProductCollectionFactory;
use MagentoCatalogModelProductRepository;
use MagentoFrameworkApiSearchCriteriaBuilder;
...
$collection = $this->productCollection->create()
->addAttributeToSelect(array('custom_attribute','sku'))
->addAttributeToFilter('custom_attribute',['lt' => 1]);
}
echo count($collection); //Returns 0
I also tried to use the search criteria object as Konrad Siamro sugested:
$search_criteria = $this->searchCriteriaBuilder
->addFilter('custom_attribute', 1, 'lt')
->create();
$collection = $this->productRepository->getList($search_criteria);
echo $collection->getTotalCount(); //returns 0
But the results are the same. It works fine if I filter on a SKU, but my custom attribute returns nothing. I also tried adding the attribute to the flat product database and re indexing.
Update: Added code I used to create the attribute:
$eavSetup->addAttribute(
MagentoCatalogModelProduct::ENTITY,
'custom_attribute',
[
'type' => 'int',
'backend' => '',
'frontend' => '',
'frontend_class' => 'validate-digits',
'label' => 'Custom Attribute',
'input' => 'text',
'class' => 'class',
'source' => '',
'global' => MagentoEavModelEntityAttributeScopedAttributeInterface::SCOPE_GLOBAL,
'visible' => true,
'required' => false,
'user_defined' => false,
'default' => '',
'searchable' => false,
'filterable' => false,
'comparable' => false,
'visible_on_front' => true,
'used_in_product_listing' => true,
'unique' => false,
'apply_to' => ''
]
);
magento2 product-collection eav
bumped to the homepage by Community♦ yesterday
This question has answers that may be good or bad; the system has marked it active so that they can be reviewed.
U need to 1st checkcatalog_product_entity
then respectively check on type tableint
,varchar
& join
– Ankit Shah
Mar 7 '17 at 10:03
add a comment |
When I use addAttributeToFilter
on MagentoCatalogModelResourceModelProductCollectionFactory, with a custom attribute, I always get 0 results.
use MagentoCatalogModelResourceModelProductCollectionFactory;
use MagentoCatalogModelProductRepository;
use MagentoFrameworkApiSearchCriteriaBuilder;
...
$collection = $this->productCollection->create()
->addAttributeToSelect(array('custom_attribute','sku'))
->addAttributeToFilter('custom_attribute',['lt' => 1]);
}
echo count($collection); //Returns 0
I also tried to use the search criteria object as Konrad Siamro sugested:
$search_criteria = $this->searchCriteriaBuilder
->addFilter('custom_attribute', 1, 'lt')
->create();
$collection = $this->productRepository->getList($search_criteria);
echo $collection->getTotalCount(); //returns 0
But the results are the same. It works fine if I filter on a SKU, but my custom attribute returns nothing. I also tried adding the attribute to the flat product database and re indexing.
Update: Added code I used to create the attribute:
$eavSetup->addAttribute(
MagentoCatalogModelProduct::ENTITY,
'custom_attribute',
[
'type' => 'int',
'backend' => '',
'frontend' => '',
'frontend_class' => 'validate-digits',
'label' => 'Custom Attribute',
'input' => 'text',
'class' => 'class',
'source' => '',
'global' => MagentoEavModelEntityAttributeScopedAttributeInterface::SCOPE_GLOBAL,
'visible' => true,
'required' => false,
'user_defined' => false,
'default' => '',
'searchable' => false,
'filterable' => false,
'comparable' => false,
'visible_on_front' => true,
'used_in_product_listing' => true,
'unique' => false,
'apply_to' => ''
]
);
magento2 product-collection eav
When I use addAttributeToFilter
on MagentoCatalogModelResourceModelProductCollectionFactory, with a custom attribute, I always get 0 results.
use MagentoCatalogModelResourceModelProductCollectionFactory;
use MagentoCatalogModelProductRepository;
use MagentoFrameworkApiSearchCriteriaBuilder;
...
$collection = $this->productCollection->create()
->addAttributeToSelect(array('custom_attribute','sku'))
->addAttributeToFilter('custom_attribute',['lt' => 1]);
}
echo count($collection); //Returns 0
I also tried to use the search criteria object as Konrad Siamro sugested:
$search_criteria = $this->searchCriteriaBuilder
->addFilter('custom_attribute', 1, 'lt')
->create();
$collection = $this->productRepository->getList($search_criteria);
echo $collection->getTotalCount(); //returns 0
But the results are the same. It works fine if I filter on a SKU, but my custom attribute returns nothing. I also tried adding the attribute to the flat product database and re indexing.
Update: Added code I used to create the attribute:
$eavSetup->addAttribute(
MagentoCatalogModelProduct::ENTITY,
'custom_attribute',
[
'type' => 'int',
'backend' => '',
'frontend' => '',
'frontend_class' => 'validate-digits',
'label' => 'Custom Attribute',
'input' => 'text',
'class' => 'class',
'source' => '',
'global' => MagentoEavModelEntityAttributeScopedAttributeInterface::SCOPE_GLOBAL,
'visible' => true,
'required' => false,
'user_defined' => false,
'default' => '',
'searchable' => false,
'filterable' => false,
'comparable' => false,
'visible_on_front' => true,
'used_in_product_listing' => true,
'unique' => false,
'apply_to' => ''
]
);
magento2 product-collection eav
magento2 product-collection eav
edited Mar 7 '17 at 15:49
asked Mar 7 '17 at 9:58
Dennis van Schaik
4941318
4941318
bumped to the homepage by Community♦ yesterday
This question has answers that may be good or bad; the system has marked it active so that they can be reviewed.
bumped to the homepage by Community♦ yesterday
This question has answers that may be good or bad; the system has marked it active so that they can be reviewed.
U need to 1st checkcatalog_product_entity
then respectively check on type tableint
,varchar
& join
– Ankit Shah
Mar 7 '17 at 10:03
add a comment |
U need to 1st checkcatalog_product_entity
then respectively check on type tableint
,varchar
& join
– Ankit Shah
Mar 7 '17 at 10:03
U need to 1st check
catalog_product_entity
then respectively check on type table int
, varchar
& join– Ankit Shah
Mar 7 '17 at 10:03
U need to 1st check
catalog_product_entity
then respectively check on type table int
, varchar
& join– Ankit Shah
Mar 7 '17 at 10:03
add a comment |
2 Answers
2
active
oldest
votes
Use search criteria for filtering collections.
Go to http://alanstorm.com/magento_2_understanding_object_repositories/
and look for search criteria.
I changed my code to use search criteria, results are exactly the same. (searching on SKU gives hits, searching on my custom attribute returns nothing.)
– Dennis van Schaik
Mar 7 '17 at 10:45
can You edit your post and show your code? :)
– Konrad Siamro
Mar 7 '17 at 10:55
I just edited my post.
– Dennis van Schaik
Mar 7 '17 at 11:23
$collection->getItems(); also return null? Where are you using his code? Meaby custom attribute have some options set incorrect?
– Konrad Siamro
Mar 7 '17 at 13:29
I added the code used to create the attribute as well. Can you check it for me?
– Dennis van Schaik
Mar 7 '17 at 14:57
|
show 2 more comments
Problem is that when you create your custom_attribute its still empty:
'user_defined' => false,
'default' => '',
'searchable' => false,
your default value is empty, but you check if value is lower than 1
->addFilter('custom_attribute', 1, 'lt')
I tested it and result without setting any value for the custom_attribute gave as result 0 items which is the correct result. I changed for example the filter to
->addFilter('custom_attribute', 1, 'eq')
and set the custom_attribue to 1 in one Product in Admin. Result is now one.
Problem is lower than one is not "empty"
Tried it with the searchCriteriaBuilder and with addAttributeToFilter works both with changed Filters and setting the custom_attribute for example to 1.
add a comment |
Your Answer
StackExchange.ready(function() {
var channelOptions = {
tags: "".split(" "),
id: "479"
};
initTagRenderer("".split(" "), "".split(" "), channelOptions);
StackExchange.using("externalEditor", function() {
// Have to fire editor after snippets, if snippets enabled
if (StackExchange.settings.snippets.snippetsEnabled) {
StackExchange.using("snippets", function() {
createEditor();
});
}
else {
createEditor();
}
});
function createEditor() {
StackExchange.prepareEditor({
heartbeatType: 'answer',
autoActivateHeartbeat: false,
convertImagesToLinks: false,
noModals: true,
showLowRepImageUploadWarning: true,
reputationToPostImages: null,
bindNavPrevention: true,
postfix: "",
imageUploader: {
brandingHtml: "Powered by u003ca class="icon-imgur-white" href="https://imgur.com/"u003eu003c/au003e",
contentPolicyHtml: "User contributions licensed under u003ca href="https://creativecommons.org/licenses/by-sa/3.0/"u003ecc by-sa 3.0 with attribution requiredu003c/au003e u003ca href="https://stackoverflow.com/legal/content-policy"u003e(content policy)u003c/au003e",
allowUrls: true
},
onDemand: true,
discardSelector: ".discard-answer"
,immediatelyShowMarkdownHelp:true
});
}
});
Sign up or log in
StackExchange.ready(function () {
StackExchange.helpers.onClickDraftSave('#login-link');
});
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Post as a guest
Required, but never shown
StackExchange.ready(
function () {
StackExchange.openid.initPostLogin('.new-post-login', 'https%3a%2f%2fmagento.stackexchange.com%2fquestions%2f163209%2fmagento-2-addattributetofilter-not-returning-any-results%23new-answer', 'question_page');
}
);
Post as a guest
Required, but never shown
2 Answers
2
active
oldest
votes
2 Answers
2
active
oldest
votes
active
oldest
votes
active
oldest
votes
Use search criteria for filtering collections.
Go to http://alanstorm.com/magento_2_understanding_object_repositories/
and look for search criteria.
I changed my code to use search criteria, results are exactly the same. (searching on SKU gives hits, searching on my custom attribute returns nothing.)
– Dennis van Schaik
Mar 7 '17 at 10:45
can You edit your post and show your code? :)
– Konrad Siamro
Mar 7 '17 at 10:55
I just edited my post.
– Dennis van Schaik
Mar 7 '17 at 11:23
$collection->getItems(); also return null? Where are you using his code? Meaby custom attribute have some options set incorrect?
– Konrad Siamro
Mar 7 '17 at 13:29
I added the code used to create the attribute as well. Can you check it for me?
– Dennis van Schaik
Mar 7 '17 at 14:57
|
show 2 more comments
Use search criteria for filtering collections.
Go to http://alanstorm.com/magento_2_understanding_object_repositories/
and look for search criteria.
I changed my code to use search criteria, results are exactly the same. (searching on SKU gives hits, searching on my custom attribute returns nothing.)
– Dennis van Schaik
Mar 7 '17 at 10:45
can You edit your post and show your code? :)
– Konrad Siamro
Mar 7 '17 at 10:55
I just edited my post.
– Dennis van Schaik
Mar 7 '17 at 11:23
$collection->getItems(); also return null? Where are you using his code? Meaby custom attribute have some options set incorrect?
– Konrad Siamro
Mar 7 '17 at 13:29
I added the code used to create the attribute as well. Can you check it for me?
– Dennis van Schaik
Mar 7 '17 at 14:57
|
show 2 more comments
Use search criteria for filtering collections.
Go to http://alanstorm.com/magento_2_understanding_object_repositories/
and look for search criteria.
Use search criteria for filtering collections.
Go to http://alanstorm.com/magento_2_understanding_object_repositories/
and look for search criteria.
answered Mar 7 '17 at 10:24
Konrad Siamro
905521
905521
I changed my code to use search criteria, results are exactly the same. (searching on SKU gives hits, searching on my custom attribute returns nothing.)
– Dennis van Schaik
Mar 7 '17 at 10:45
can You edit your post and show your code? :)
– Konrad Siamro
Mar 7 '17 at 10:55
I just edited my post.
– Dennis van Schaik
Mar 7 '17 at 11:23
$collection->getItems(); also return null? Where are you using his code? Meaby custom attribute have some options set incorrect?
– Konrad Siamro
Mar 7 '17 at 13:29
I added the code used to create the attribute as well. Can you check it for me?
– Dennis van Schaik
Mar 7 '17 at 14:57
|
show 2 more comments
I changed my code to use search criteria, results are exactly the same. (searching on SKU gives hits, searching on my custom attribute returns nothing.)
– Dennis van Schaik
Mar 7 '17 at 10:45
can You edit your post and show your code? :)
– Konrad Siamro
Mar 7 '17 at 10:55
I just edited my post.
– Dennis van Schaik
Mar 7 '17 at 11:23
$collection->getItems(); also return null? Where are you using his code? Meaby custom attribute have some options set incorrect?
– Konrad Siamro
Mar 7 '17 at 13:29
I added the code used to create the attribute as well. Can you check it for me?
– Dennis van Schaik
Mar 7 '17 at 14:57
I changed my code to use search criteria, results are exactly the same. (searching on SKU gives hits, searching on my custom attribute returns nothing.)
– Dennis van Schaik
Mar 7 '17 at 10:45
I changed my code to use search criteria, results are exactly the same. (searching on SKU gives hits, searching on my custom attribute returns nothing.)
– Dennis van Schaik
Mar 7 '17 at 10:45
can You edit your post and show your code? :)
– Konrad Siamro
Mar 7 '17 at 10:55
can You edit your post and show your code? :)
– Konrad Siamro
Mar 7 '17 at 10:55
I just edited my post.
– Dennis van Schaik
Mar 7 '17 at 11:23
I just edited my post.
– Dennis van Schaik
Mar 7 '17 at 11:23
$collection->getItems(); also return null? Where are you using his code? Meaby custom attribute have some options set incorrect?
– Konrad Siamro
Mar 7 '17 at 13:29
$collection->getItems(); also return null? Where are you using his code? Meaby custom attribute have some options set incorrect?
– Konrad Siamro
Mar 7 '17 at 13:29
I added the code used to create the attribute as well. Can you check it for me?
– Dennis van Schaik
Mar 7 '17 at 14:57
I added the code used to create the attribute as well. Can you check it for me?
– Dennis van Schaik
Mar 7 '17 at 14:57
|
show 2 more comments
Problem is that when you create your custom_attribute its still empty:
'user_defined' => false,
'default' => '',
'searchable' => false,
your default value is empty, but you check if value is lower than 1
->addFilter('custom_attribute', 1, 'lt')
I tested it and result without setting any value for the custom_attribute gave as result 0 items which is the correct result. I changed for example the filter to
->addFilter('custom_attribute', 1, 'eq')
and set the custom_attribue to 1 in one Product in Admin. Result is now one.
Problem is lower than one is not "empty"
Tried it with the searchCriteriaBuilder and with addAttributeToFilter works both with changed Filters and setting the custom_attribute for example to 1.
add a comment |
Problem is that when you create your custom_attribute its still empty:
'user_defined' => false,
'default' => '',
'searchable' => false,
your default value is empty, but you check if value is lower than 1
->addFilter('custom_attribute', 1, 'lt')
I tested it and result without setting any value for the custom_attribute gave as result 0 items which is the correct result. I changed for example the filter to
->addFilter('custom_attribute', 1, 'eq')
and set the custom_attribue to 1 in one Product in Admin. Result is now one.
Problem is lower than one is not "empty"
Tried it with the searchCriteriaBuilder and with addAttributeToFilter works both with changed Filters and setting the custom_attribute for example to 1.
add a comment |
Problem is that when you create your custom_attribute its still empty:
'user_defined' => false,
'default' => '',
'searchable' => false,
your default value is empty, but you check if value is lower than 1
->addFilter('custom_attribute', 1, 'lt')
I tested it and result without setting any value for the custom_attribute gave as result 0 items which is the correct result. I changed for example the filter to
->addFilter('custom_attribute', 1, 'eq')
and set the custom_attribue to 1 in one Product in Admin. Result is now one.
Problem is lower than one is not "empty"
Tried it with the searchCriteriaBuilder and with addAttributeToFilter works both with changed Filters and setting the custom_attribute for example to 1.
Problem is that when you create your custom_attribute its still empty:
'user_defined' => false,
'default' => '',
'searchable' => false,
your default value is empty, but you check if value is lower than 1
->addFilter('custom_attribute', 1, 'lt')
I tested it and result without setting any value for the custom_attribute gave as result 0 items which is the correct result. I changed for example the filter to
->addFilter('custom_attribute', 1, 'eq')
and set the custom_attribue to 1 in one Product in Admin. Result is now one.
Problem is lower than one is not "empty"
Tried it with the searchCriteriaBuilder and with addAttributeToFilter works both with changed Filters and setting the custom_attribute for example to 1.
edited Mar 8 '17 at 3:03
answered Mar 8 '17 at 2:51
Samir Shaban
53125
53125
add a comment |
add a comment |
Thanks for contributing an answer to Magento Stack Exchange!
- Please be sure to answer the question. Provide details and share your research!
But avoid …
- Asking for help, clarification, or responding to other answers.
- Making statements based on opinion; back them up with references or personal experience.
To learn more, see our tips on writing great answers.
Some of your past answers have not been well-received, and you're in danger of being blocked from answering.
Please pay close attention to the following guidance:
- Please be sure to answer the question. Provide details and share your research!
But avoid …
- Asking for help, clarification, or responding to other answers.
- Making statements based on opinion; back them up with references or personal experience.
To learn more, see our tips on writing great answers.
Sign up or log in
StackExchange.ready(function () {
StackExchange.helpers.onClickDraftSave('#login-link');
});
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Post as a guest
Required, but never shown
StackExchange.ready(
function () {
StackExchange.openid.initPostLogin('.new-post-login', 'https%3a%2f%2fmagento.stackexchange.com%2fquestions%2f163209%2fmagento-2-addattributetofilter-not-returning-any-results%23new-answer', 'question_page');
}
);
Post as a guest
Required, but never shown
Sign up or log in
StackExchange.ready(function () {
StackExchange.helpers.onClickDraftSave('#login-link');
});
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Post as a guest
Required, but never shown
Sign up or log in
StackExchange.ready(function () {
StackExchange.helpers.onClickDraftSave('#login-link');
});
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Post as a guest
Required, but never shown
Sign up or log in
StackExchange.ready(function () {
StackExchange.helpers.onClickDraftSave('#login-link');
});
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Post as a guest
Required, but never shown
Required, but never shown
Required, but never shown
Required, but never shown
Required, but never shown
Required, but never shown
Required, but never shown
Required, but never shown
Required, but never shown
U need to 1st check
catalog_product_entity
then respectively check on type tableint
,varchar
& join– Ankit Shah
Mar 7 '17 at 10:03