【问题标题】:CakePHP: accessing data from query in viewCakePHP:从视图中的查询访问数据
【发布时间】:2010-09-08 11:59:04
【问题描述】:

我建立了一个 hasMany 关系。用户有很多项目。在配置文件视图的用户控制器中,我可以看到在 SQL 转储中为该用户返回的项目。

我想在我的个人资料视图中为该用户显示每个项目。所以我在用户和项目之间建立了关联。用户有很多项目。我在用户控制器中创建了一个带有关联配置文件视图的配置文件操作。当我导航到其中一位用户的个人资料视图时,我可以看到它正在查询 SQL 转储中的项目。

这是具有正确用户 ID 的 SQL 转储:

SELECT `Project`.`id`, `Project`.`title`, `Project`.`created`, `Project`.`website`, `Project`.`language_id`, `Project`.`user_id`, `Project`.`description`, `Project`.`tags`, `Project`.`creator_id` FROM `projects` AS `Project` WHERE `Project`.`user_id` = (5)

如何使用此查询中的数据?

项目模型

var $belongsTo = array(
    'User' => array(
        'className'    => 'User',
        'foreignKey'    => 'user_id',
        'counterCache' => 'num_of_projects'
        ),
    'Language'
     );  
?>

用户模型

  var $hasMany = array('Project' => 
                                array('className'     => 'Project', 
                                      'conditions'    => '',
                                      'order'         => '', 
                                      'limit'         => '',                    
                                      'foreignKey'    => 'user_id',              
                                      'dependent'     => true,                   
                                      'exclusive'     => false,                  
                                      'finderQuery'   => '',                      
                                      'fields'        => '',                      
                                      'offset'        => '',                      
                                      'counterQuery'  => ''
                                      )           
                    );

User_Controller 的配置文件操作

function profile($id = null) {
    $this->User->id = $id;
    $this->set('user', $this->User->read());
}

【问题讨论】:

    标签: php cakephp cakephp-model


    【解决方案1】:

    在你看来

    foreach($user['Project'] as $project)
    {
       echo $project['title'].'<br />';
    }
    

    要查看大局,只需使用 pr(),您应该能够看到如何从那里访问其余数据。

    pr($user);
    

    【讨论】:

    • 感谢您的回复,尝试过但收到此错误:foreach() 提供的参数无效。它知道什么是项目吗?它没有像在控制器中那样设置。这是通过协会
    • 好的...您能否确认我们目前甚至不涉及视图。您只想遍历“用户”控制器中的每个“项目”?所以你正在做类似的事情: $users = $this->User->find();一个用户有很多项目?如果您发布一些代码真的会有所帮助,我只是在这里猜测:D
    • 我已经更新了我的问题,感谢您帮助我解决这个问题!
    • 我已经更新了我的答案。请记住,由于 CakePHP 只是返回数组,因此您可以使用 print_r() 或 cake 的内置 pr() 将其转储,通过将其包装在 html pre 标记中使其更易于阅读。这样,您应该始终能够查看您拥有的数据以及如何访问这些数据。
    猜你喜欢
    • 1970-01-01
    • 2018-09-04
    • 1970-01-01
    • 2020-11-20
    • 2017-02-09
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-10-02
    相关资源
    最近更新 更多