<small id='RmlFv'></small><noframes id='RmlFv'>

    <tfoot id='RmlFv'></tfoot>

    <legend id='RmlFv'><style id='RmlFv'><dir id='RmlFv'><q id='RmlFv'></q></dir></style></legend>

      • <bdo id='RmlFv'></bdo><ul id='RmlFv'></ul>

      <i id='RmlFv'><tr id='RmlFv'><dt id='RmlFv'><q id='RmlFv'><span id='RmlFv'><b id='RmlFv'><form id='RmlFv'><ins id='RmlFv'></ins><ul id='RmlFv'></ul><sub id='RmlFv'></sub></form><legend id='RmlFv'></legend><bdo id='RmlFv'><pre id='RmlFv'><center id='RmlFv'></center></pre></bdo></b><th id='RmlFv'></th></span></q></dt></tr></i><div id='RmlFv'><tfoot id='RmlFv'></tfoot><dl id='RmlFv'><fieldset id='RmlFv'></fieldset></dl></div>

        在 Zend Framework 中为具有多个表关系的对象建模

        时间:2023-05-31

            <tbody id='3UukL'></tbody>
              • <bdo id='3UukL'></bdo><ul id='3UukL'></ul>
              • <small id='3UukL'></small><noframes id='3UukL'>

                  <legend id='3UukL'><style id='3UukL'><dir id='3UukL'><q id='3UukL'></q></dir></style></legend>
                1. <i id='3UukL'><tr id='3UukL'><dt id='3UukL'><q id='3UukL'><span id='3UukL'><b id='3UukL'><form id='3UukL'><ins id='3UukL'></ins><ul id='3UukL'></ul><sub id='3UukL'></sub></form><legend id='3UukL'></legend><bdo id='3UukL'><pre id='3UukL'><center id='3UukL'></center></pre></bdo></b><th id='3UukL'></th></span></q></dt></tr></i><div id='3UukL'><tfoot id='3UukL'></tfoot><dl id='3UukL'><fieldset id='3UukL'></fieldset></dl></div>
                  <tfoot id='3UukL'></tfoot>

                  本文介绍了在 Zend Framework 中为具有多个表关系的对象建模的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着跟版网的小编来一起学习吧!

                  问题描述

                  我正在尝试使用 Zend Framework,并尝试针对我正在制作的网站使用快速入门"指南,只是为了了解该过程将如何运作.如果这个答案很明显,请原谅我,希望有经验的人可以对此有所了解.

                  I'm toying with Zend Framework and trying to use the "QuickStart" guide against a website I'm making just to see how the process would work. Forgive me if this answer is obvious, hopefully someone experienced can shed some light on this.

                  我有三个数据库表:

                  CREATE TABLE `users` (
                    `id` int(11) NOT NULL auto_increment,
                    `email` varchar(255) NOT NULL,
                    `username` varchar(255) NOT NULL default '',
                    `first` varchar(128) NOT NULL default '',
                    `last` varchar(128) NOT NULL default '',
                    `gender` enum('M','F') default NULL,
                    `birthyear` year(4) default NULL,
                    `postal` varchar(16) default NULL,
                    `auth_method` enum('Default','OpenID','Facebook','Disabled') NOT NULL default 'Default',
                    PRIMARY KEY  (`id`),
                    UNIQUE KEY `email` (`email`),
                    UNIQUE KEY `username` (`username`)
                  ) ENGINE=MyISAM DEFAULT CHARSET=latin1
                  
                  CREATE TABLE `user_password` (
                    `user_id` int(11) NOT NULL,
                    `password` varchar(16) NOT NULL default '',
                    PRIMARY KEY  (`user_id`),
                    UNIQUE KEY `user_id` (`user_id`)
                  ) ENGINE=MyISAM DEFAULT CHARSET=latin1
                  
                  CREATE TABLE `user_metadata` (
                    `user_id` int(11) NOT NULL default '0',
                    `signup_date` datetime default NULL,
                    `signup_ip` varchar(15) default NULL,
                    `last_login_date` datetime default NULL,
                    `last_login_ip` varchar(15) default NULL,
                    PRIMARY KEY  (`user_id`),
                    UNIQUE KEY `user_id` (`user_id`)
                  ) ENGINE=MyISAM DEFAULT CHARSET=latin1
                  

                  我想创建一个在某些情况下使用所有三个表的用户模型.例如,如果/当需要元数据时访问元数据表.仅当设置了默认"auth_method 时才访问 user_password 表.稍后我可能会添加一个配置文件表,我希望能够从用户模型访问该表.

                  I want to create a User model that uses all three tables in certain situations. E.g., the metadata table is accessed if/when the meta data is needed. The user_password table is accessed only if the 'Default' auth_method is set. I'll likely be adding a profile table later on that I would like to be able to access from the user model.

                  使用采埃孚做到这一点的最佳方法是什么?为什么?

                  What is the best way to do this with ZF and why?

                  推荐答案

                  class Users extends Zend_Db_Table_Abstract
                  {
                      protected $_name = 'users';
                      protected $_rowClass = 'User';
                      protected $_dependentTables = array ('UserMetadata', 'UserPassword');
                  
                  ...
                  
                  class UserMetadata extends Zend_Db_Table_Abstract
                  {
                      protected $_name = 'user_metadata';
                      protected $_referenceMap = array (
                      'Users'=> array (
                      'columns'=>'user_id',
                      'refTableClass'=>'Users',
                      'refColumns'=>'id'
                      )
                      );
                  
                  ...
                  
                  class UserPassword extends Zend_Db_Table_Abstract
                  {
                      protected $_name = 'user_password';
                      protected $_referenceMap = array (
                      'Users'=> array (
                      'columns'=>'user_id',
                      'refTableClass'=>'Users',
                      'refColumns'=>'id'
                      )
                      );
                  

                  获取数据:

                  $id = //get your user id from somewhere
                  
                  $users = new Users();
                  $user = $users->fetchRow('id=?', $id);
                  if ($user->authMethod == 0)
                  {
                      $metadata = $user->findDependentRowset('UserMetadata')->current();
                  }
                  

                  $user = $users->fetchRow($users->select()
                                ->where('gender=?, 'M')
                                ->order('email ASC');
                  

                  ...等

                  插入数据:

                  $newRow = $users->fetchNew();
                  $newRow->email = me@domain.com;
                  $newRow->save();
                  

                  $users = new Users();
                  $data = array('email'     => 'me@domain.com',
                                'firstname' => 'Me');
                  $users->insert($data);
                  

                  更新:

                  $user->email = 'me@domain.org';
                  $user->save();
                  

                  删除一行:

                  $user->delete();
                  

                  使用交易:

                  $db->beginTransaction();
                  $db->commit();
                  $db->rollback();
                  

                  等等...都在 ZF 手册中!

                  这篇关于在 Zend Framework 中为具有多个表关系的对象建模的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持跟版网!

                  上一篇:如何添加视图助手目录(zend 框架) 下一篇:PHP中的两个冒号是什么意思?

                  相关文章

                2. <small id='afKKJ'></small><noframes id='afKKJ'>

                  • <bdo id='afKKJ'></bdo><ul id='afKKJ'></ul>

                3. <tfoot id='afKKJ'></tfoot>

                  <legend id='afKKJ'><style id='afKKJ'><dir id='afKKJ'><q id='afKKJ'></q></dir></style></legend>

                    1. <i id='afKKJ'><tr id='afKKJ'><dt id='afKKJ'><q id='afKKJ'><span id='afKKJ'><b id='afKKJ'><form id='afKKJ'><ins id='afKKJ'></ins><ul id='afKKJ'></ul><sub id='afKKJ'></sub></form><legend id='afKKJ'></legend><bdo id='afKKJ'><pre id='afKKJ'><center id='afKKJ'></center></pre></bdo></b><th id='afKKJ'></th></span></q></dt></tr></i><div id='afKKJ'><tfoot id='afKKJ'></tfoot><dl id='afKKJ'><fieldset id='afKKJ'></fieldset></dl></div>