【问题标题】:How to read CakePHP Model using specific fields?如何使用特定字段读取 CakePHP 模型?
【发布时间】:2010-11-29 16:51:23
【问题描述】:

我是 CakePHP 的新手,我一直在阅读使用其他字段的模型。我做了一个 cake bake 命令来生成一个简单的用户 CRUD。我可以使用 CakePHP 提供的 URL 查看用户。

/users/view/1

我可以使用 id = 1 查看用户。如果我想按名称而不是 id 查看用户怎么办?

/users/view/username

默认情况下,视图函数通过 id 读取用户模型。

$this->User->read(null, $id)

谢谢。

【问题讨论】:

    标签: php cakephp model


    【解决方案1】:

    您可以使用find 函数或findBy<Field>() 在您的情况下使用findByUsername()

    check this

    【讨论】:

    • 嗨。感谢您的解决方案。 :-)
    【解决方案2】:

    我自己从未使用过 cakePHP,但我建议您可能必须实现一个新的用户模型方法,例如 getUserByUsername($username) 然后,这将反过来与您的 DAL 交互,该 DAL 将根据用户名获取该用户的详细信息并返回一个用户对象,您可以随意使用该对象...

    【讨论】:

      【解决方案3】:

      CakePHP 似乎专注于弃用某些函数,例如findAll()。或许很快findBy<field>()这样的魔法方法也会有同样的命运。

      我可以推荐martswite的建议,你应该创建你的自定义函数:

      function findUser($username=''){
          return $this->find('first', array(
              'conditions' => array(
                  'User.username' => $username
              )
          ));
      }
      

      也许你有一个status 字段,也许个人资料不公开,你可以添加一个条件:

      function findUser($username=''){
          return $this->find('first', array(
              'conditions' => array(
                  'User.username' => $username,
                  'User.status' => 1
              )
          ));
      }
      

      我认为这比 findBy<Field> 更模块化。

      【讨论】:

      • "CakePHP 似乎正在专注于弃用某些函数,例如 findAll()。也许很快 findBy() 之类的魔术方法也会有同样的命运"您从哪里读到这些功能会被弃用吗?
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2021-10-27
      • 1970-01-01
      • 2016-06-26
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多