基本上,
数据库表:
产品:id,name
评论:productId,评论
型号: product.php
class Product extends AppModel {
public $hasMany = array('Comment'=>array('foreignkey'=>'productId'));
}
comment.php
class Comment extends AppModel {
public $belongsTo = array('Product');
}
在产品index.ctp中,如何显示一个产品评论?我需要在ProductsController.php和index.ctp中编写什么?
答案 0 :(得分:1)
如果您遵循CakePHP约定(CakePHP Convention over Configuration),那么所有这些都将自动完成,它需要将外键命名为product_id而不是productId(尽管您已在关系中设置了外键 - 根据惯例,从一开始就更容易开始了。
您还应该在关系中指定类名:
public $hasMany = array(
'Comment' => array(
'className' => 'Comment',
'foreignKey' => 'product_id'
)
);
在您的情况下,您应该在控制器中执行的操作是:
$products = $this->Product->find('all');
这将获取您对这些产品的所有产品和任何相关评论(以及您在产品型号中声明的任何其他相关型号)
如果您想了解有关设置此内容的详情,请查看CakePHP - Retrieving your data