/** * Load customer by email * * @param \Magento\Customer\Model\Customer $customer * @param string $email * @return $this * @throws \Magento\Framework\Exception\LocalizedException */ public function loadByEmail(\Magento\Customer\Model\Customer $customer, $email) { $adapter = $this->_getReadAdapter(); $bind = ['customer_email' => $email]; $select = $adapter->select()->from($this->getEntityTable(), [$this->getEntityIdField()])->where('email = :customer_email'); if ($customer->getSharingConfig()->isWebsiteScope()) { if (!$customer->hasData('website_id')) { throw new \Magento\Framework\Exception\LocalizedException(__('Customer website ID must be specified when using the website scope')); } $bind['website_id'] = (int) $customer->getWebsiteId(); $select->where('website_id = :website_id'); } $customerId = $adapter->fetchOne($select, $bind); if ($customerId) { $this->load($customer, $customerId); } else { $customer->setData([]); } return $this; }