【发布时间】:2015-05-15 19:49:02
【问题描述】:
我有一个表 1 产品和表 2 供应商
表格结构是这样的:
产品
CREATE TABLE IF NOT EXISTS `products` (
`id_product` int(11) NOT NULL AUTO_INCREMENT,
`id_supplier` int(11) NOT NULL,
`name_product` varchar(20) NOT NULL,
PRIMARY KEY (`id_product`) )
ENGINE=InnoDB DEFAULT CHARSET=utf8 AUTO_INCREMENT=1 ;
供应商
CREATE TABLE IF NOT EXISTS `suppliers` (
`id_supplier` int(11) NOT NULL AUTO_INCREMENT,
`name_supplier` varchar(11) NOT NULL,
PRIMARY KEY (`id_supplier`) )
ENGINE=InnoDB DEFAULT CHARSET=utf8 AUTO_INCREMENT=1 ;
型号:(suppliers_model.php)
class Suppliers_Model extends Model{
public function fetchSuppliers(){
stmt = $this->db->prepare("SELECT * FROM suppliers");
$stmt->setFetchMode(PDO::FETCH_OBJ);
$stmt->execute();
return $stmt->fetchAll();
}
}
控制器(suppliers.php)
class Suppliers extends Controller{
function __construct(){
parent::__construct();
}
public function index(){
$this->view->Suppliers= $this->model->fetchSuppliers();
}
}
查看:
<table>
<tr>
<th>ID</th>
<th>Name of supplier</th>
<th>List of products</th>
</tr>
<?php foreach($this->Suppliers AS $key=>$value):?>
<tr>
<td><?php echo $value->id_supplier; ?></td>
<td><?php echo $value->name_supplier; ?></td>
<td>
<?php foreach():?>
**HERE I Wante To display a liste of products**
1. Product A
2. Product B
etc....
<?php endforeach;?>
</td>
</tr>
<?php endforeach;?>
如何创建另一个模型和控制器来获取产品列表并传递值
$value->id_supplier
作为显示每个供应商产品列表的条件?
我试过这段代码,但它不起作用
public function listProducts($id_supplier){
stmt = $this->db->prepare("SELECT * FROM products WHERE id_supplier=$id_supplier");
$stmt->setFetchMode(PDO::FETCH_OBJ);
$stmt->execute();
return $stmt->fetchAll();
}
并将此代码添加到控制器中
$this->view->listProducts= $this->model->listProducts('id_supplier');
并尝试使用 foreach 循环遍历产品表以检索产品列表,但它不起作用
注意:我正在使用自定义 PHP MVC
【问题讨论】:
-
$this->model->listProducts('id_supplier');您在字面上询问具有“id_supplier”的产品
-
您的 MVC 是否支持某些视图助手?
-
为什么不使用现有的框架,如 CI 或其他?无论如何,您提供的不是实际的 id,而是一个字符串
id_supplier。你应该在控制器内部做到这一点。收集控制器内部的所有数据逻辑,只分配数据,然后将其呈现在视图中,视图内部不再调用模型方法 -
@LukasJahoda 助手喜欢什么?我仍然是 MVC 的初学者,不知道那些助手是什么意思!
-
@Ghost 这是一个考试,我不得不使用我自己的 MVC 而不是任何其他框架,这就是为什么