Cakephp:模型链接

时间:2009-06-10 04:44:29

标签: php cakephp

我是cakephp的新人,实际上我想要显示属于一个主题类别的所有主题列表。我制作了一个主题模型,代码如下:

subjects.php

<?php
class Subject extends AppModel
{
 var $name='Subject';
var $belongsTo = 'Subjectscat'; 
}

?>

和主题类别模型是:

subjectscats.php

<?php
class Subjectscat extends AppModel
{
 var $name='Subjectscat';
var $hasMany=array('Subject');
}

?>

subjectscats_controller.php

<?php
        class SubjectscatsController extends AppController
        {
        var $name='Subjectscats';
        var $helpers = array('Html', 'Javascript', 'Ajax');
        var $components = array('Auth');
        var $uses=array('Subject', 'User','Subjectscat');


        function index()
        {
         $this->layout = 'internal';
         $session_id=$this->Session->read('User.id');
         $username = $this->User->find('all', array('conditions' => array('User.id' =>$session_id)));
         $this->set('session_id',$username);
         $this->Subjectscat->recursive =1;
         $cat = $this->Subjectscat->find('all');
          $this->set('subjectcategory',$cat);
         }
          function isAuthorized() {
            return true;
         }

}

?>

和视图的位置:

视图\ Subjectscats \ index.ctp

<table><tr><td colspan="3">View Feedback</tr>
 <?php debug($subjectcategory) ?> <?php echo $html->link('Add Feedback', '/feedbacks/add', array('class'=>'button')); ?>
<?php print_r($subjectcategory); ?>
<?php foreach($subjectcategory as $subject_cat)

{
?>
<tr>
<td><?php echo $subject_cat['Subjectscat']['cat_name'];?></td>
<?php print_r($subject_cat['Subjectscat']['Subjects']); ?>
</tr>
<?php }
?>

 </tr>
</table>

并且它给出了这个错误:

  

注意(8):未定义的索引:主题[APP \ views \ subjectscats \ index.ctp,第10行]

-- Table structure for table `subjects`
--

CREATE TABLE IF NOT EXISTS `subjects` (
  `id` bigint(4) NOT NULL auto_increment,
  `subjectscats_id` bigint(4) NOT NULL,
  `name` varchar(25) NOT NULL,
  PRIMARY KEY  (`id`),
  KEY `subjectscats_id` (`subjectscats_id`)
) ENGINE=InnoDB  DEFAULT CHARSET=latin1 AUTO_INCREMENT=3 ;

--
-- Dumping data for table `subjects`
--

INSERT INTO `subjects` (`id`, `subjectscats_id`, `name`) VALUES
(1, 1, 'English'),
(2, 1, 'Hindi');

--
-- Constraints for dumped tables
--

--
-- Constraints for table `subjects`
--
ALTER TABLE `subjects`
  ADD CONSTRAINT `subjects_ibfk_1` FOREIGN KEY (`subjectscats_id`) REFERENCES `subjectscats` (`id`) ON UPDATE CASCADE;

1 个答案:

答案 0 :(得分:3)

我有时希望开发人员更加关注细节。

您收到的通知来自这条线:

print_r($subject_cat['Subjectscat']['Subjects'])

如果用这一行替换该行,你会明白为什么:

debug($subject_cat)

“主题”键在你的数组中不存在,所有模型都是单数,还记得吗?你需要做的是一个foreach循环:

foreach ($subject_cat['Subject'] as $subject)
{
    // output stuff you need from $subject
}

记住debug() function,这是一个很棒的工具。调试你的东西的另一种方法是优秀的debug_kit plugin;非常容易设置,非常非常有用。