All pastes #363959 Raw Edit

Anonymous

public text v1 · immutable
#363959 ·published 2007-02-19 20:47 UTC
rendered paste body
class User extends Doctrine_Record
{
    public function setTableDefinition()
    {
        $this->setTableName( 'users' );

        $this->hasColumn( 'fname', 'string', 255, array( 'notnull' => true ) );
        $this->hasColumn( 'lname', 'string', 255, array( 'notnull' => true ) );

        $this->option( 'engine', 'InnoDB' );
        $this->option( 'charset', 'latin1' );
    }

    public function setUp()
    {
        $this->ownsMany( 'EmailAddress', 'EmailAddress.user_id' );
    }
}

class UserTable extends Doctrine_Table
{
    public function getQueryFindAllWithEmailAddresses()
    {
        return Doctrine_Query::create()->from( 'User u' )
                                       ->leftJoin( 'u.EmailAddress' );
    }

    public function findAllWithEmailAddresses()
    {
        return $this->getQueryFindAllWithEmailAddresses()->execute();
    }
}

class EmailAddress extends Doctrine_Record 
{
    public function setTableDefinition()
    {
        $this->setTableName( 'email_addresses' );

        $this->hasColumn( 'user_id', 'integer', 11, array( 'notnull' => true ) );
        $this->hasColumn( 'email_address', 'string', 255, array( 'notnull' => true ) );

        $this->option( 'engine', 'InnoDB' );
        $this->option( 'charset', 'latin1' );
    }

    public function setUp()
    {
        $this->hasOne( 'User', 'EmailAddress.user_id', 'id' );
    }
}

class EmailAddressTable extends Doctrine_Table
{
    public function getQueryFindAllWithUsers()
    {
        return Doctrine_Query::create()->from( 'EmailAddress ea' )
                                       ->leftJoin( 'ea.User' );
    }

    public function findAllWithUsers()
    {
        return $this->getQueryFindAllWithUsers()->execute();
    }
}