Magento – How to use addFieldToFilter & addFieldToSelect in magento2

collection;magento2

I need to known how to use addFieldToFilter & addFieldToSelect in frontend? And can I use like below

$searchQuery = $wholeData["searchQuery"] ?? "";
$searchQuery = trim($searchQuery);
$agentCollection = $this->_agents->create()->addNameToSelect();
             
if ($agentId > 0) {
    $agentCollection->addFieldToFilter("id", $agentId);
} else {
    $agentCollection->addFieldToSelect("email")
            ->addFieldToFilter(
                    [
                            ["field"=>"email", "like"=>"%".$searchQuery."%"],
                            ["field"=>"contactno", "like"=>"%".$searchQuery."%"]
                    ]
            );
}

Best Answer

1) yes you can use this logic in front end but in block classes. 2) yes above logic can be used but it will add OR logic in you case same as following in better way

$this->collection->addFieldToFilter(
        ['weight', 'name'],
        [['in' => [1, 3]], ['like' => 'M%']]
    );

Can be used as AND logic:

$category = $this->collectionFactory->create()
            ->addFieldToFilter('parent_id', $rootCategoryId)
            ->addFieldToFilter('name', $categoryName)
            ->fetchItem();
Related Topic