2

I have a custom module with a custom DB. The DB consist of customer_id field and inserted customer_id into it.

How can I get a single record based on customer_id passed, whereby customer_id is the unique field value in my DB table.

For example:

Mage::getModel('module/model')->addFieldToFilter('customer_id', array('eq' => $customerId));

The above code should give me a single record instead of giving a collection.

If I use below code:

Mage::getModel('module/model')->getCollection()->addFieldToFilter('customer_id', array('eq' => $customerId));

it gives me a record in array, and I do not want to use a loop to fetch data.

Is it possible to load data by using my custom DB field name, like

$custommoduleobj= Mage::getModel(‘yourmodulename/modelname’)->loadByCustomerId($customerId);

Please Help.

Thanks.

1
  • yes Possible... Commented Aug 21, 2014 at 6:07

2 Answers 2

7

Try this:

Mage::getModel('module/model')->addFieldToFilter('customer_id', array('eq' => $customerId))->getFirstItem();

or this:

Mage::getModel('module/model')->load($customerId, 'customer_id');
6
  • Silly me..I knew it already, but didn't think about using it. Thanks. Commented Aug 21, 2014 at 6:13
  • Marius,can you tell me,are you consider customer_id' is customer_id as table primary key Commented Aug 21, 2014 at 7:44
  • @AmitBera In both the approaches above it's not important if customer_id id PK or not. Commented Aug 21, 2014 at 7:58
  • that means... if i have field firstname in this table...then i can one row using Mage::getModel('module/model')->load($customerfirstname, 'firstname'); Commented Aug 21, 2014 at 8:04
  • Yes. But if the field is not unique there is no way to predict what row you get. Commented Aug 21, 2014 at 8:08
1

yes Possible... add this function on Model/Yourmodel.php

 public function loadByCustomerId($customerID)
    {
        $this->_getResource()->loadByCustomerId($this, $customerID);
        return $this;
    }

And then goto...Yourmodel.php class resource class at /Model/Mysql4/Resource ->Yourmodel.php

  public function ByCustomerId(YourmoduleNamesPace_YourmOdules_Model_YourModuel $Object, $customerId)
    {
        $adapter = $this->_getReadAdapter();
        $bind    = array('customer_id'  => $customerId);
        $select  = $adapter->select()
            ->from('yourtable' array('table_primary_key'))
            ->where('customer_id = :customer_id');


        $customerId = $adapter->fetchOne($select, $bind);
        if ($customerId) {
            $this->load($Object, $customerId);
        } else {
            $customer->setData(array());
        }

        return $this;
    }

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.

Start asking to get answers

Find the answer to your question by asking.

Ask question

Explore related questions

See similar questions with these tags.