不知道如何从数组中检索我的值

时间:2011-12-08 08:37:38

标签: cakephp

我的CakePHP应用程序有两个问题(它是我在CakePHP中的第一个问题)。我正在尝试将旧的php网站转换为蛋糕。

1.Issue

我的控制器接受参数$ id,但数据是从连接表中传来的,所以在cookbook中它有这样的东西

我的控制员 dish_categories_controller.php

class DishCategoriesController extends AppController {


    var $uses = array("DishCategory");
    var $hasOne ='';
    function get_categories($id)
    {

       $this->set('dishes',$this->DishCategory->find());
       $this->layout = 'master_layout';
    }   
  }

模型

dish_category.php

class DishCategory extends AppModel{

    var $name = 'DishCategory';

    var $hasOne = array(
            'Dish' => array(
              'className' => 'Dish',
              'conditions' => array('Dish.id' => '1'),
              'dependent' => true
                   )
           );
 }

正如您所见,Dish.id => '1'是硬编码的,如何让它在那里动态,以便我传递一个值,使它像Dish.if => $ id?。

这是我的第一个问题。

第二个问题与视图

有关

该模型只返回一条记录,如何才能返回所有记录,以及如何在当前视图和数组格式的代码下面循环显示该记录。

这是我认为的

 <?php
         echo $dishes['DishCategory']['category_info'];
         echo $dishes['DishCategory']['category_title'];
         echo $dishes['Dish']['dish_name'];
         echo $dishes['Dish']['dish_image'];        
         echo $this->Html->image($dishes['Dish']['dish_image'], array('alt' => 'CakePHP'))


    ?>

数组格式

Array ( [DishCategory] => Array 
       ( [id] => 1 [category_name] => Appetizers 
         [category_keywords] => appetizer, appetizers 
         [category_title] => Our Side Dishes 
         [category_info] => Test Test

[dish_id] => 1 ) 
      [Dish] => Array ( [id] => 1 
                        [dish_name] => Rice 
                        [dish_disc] => The Best flavor ever 
                        [dish_price] => 2.90 [dish_image] => /img/rice_chicken.jpeg [dish_category_id] => 1 
[dish_price_label] => Delicious Arepa ) ) 

感谢您的帮助,帮助我了解如何更好地完成此操作。谢谢。

1 个答案:

答案 0 :(得分:3)

首先,您 DishCategoriesController 具有模型属性,您可以删除它们。在您的控制器中,您将为查找设置条件,如下所示:

class DishCategoriesController extends AppController {

  function get_categories($id)
  { 
    // find category with a dish of $id
    $this->set('dishes', $this->DishCategory->find('all', array(
      'conditions' => array(
        'Dish.id' => $id
      )
    )));

    // set master layout
    $this->layout = 'master_layout';
  }   

}

您的 DishCategory 模型看起来非常基本,您不需要对关系条件进行硬编码:

class DishCategory extends AppModel {

  /**
   * hasOne associations
   *
   * @var array
   */
    public $hasOne = array(
        'Dish' => array(
            'className' => 'Dish',
            'foreignKey' => 'dish_category_id'
        )
    )
}

此时值得注意的是,由于 DishCategory hasOne Dish ,使用上面的查询查询,它只会返回一个单一结果。但是,你返回了多个结果,你可以在你的视图中循环遍历它们:

<?php foreach ($dishes as $key => $dish): ?>
  <?php var_dump($dish) ?>
<?php endforeach ?>