显示来自加入 table 的数据 codeigniter
Show data codeigniter from joining table
我有问题。
我想显示Item详情,带注释,一个Item数据有几张图片会出现。
我按以下方式显示数据:
我有这样的模型和方法:
class Items_model extends CI_Model
{
public function dataItemsDetail($id)
{
$this->db->select('
`items`.`id`, `items`.`item_code`, `items`.`item_name`, `category`.`name` AS
`category`, `items`.`price_unit`, `items`.`rating`, `images`.`image_name`,
`items`.`description`
');
$this->db->where('items.id', $id);
$this->db->join('items', 'items.category_id = category.id', 'right');
$this->db->join('images', 'images.item_code = items.item_code', 'left');
$this->db->from('category');
$query = $this->db->get();
return $query->row_array();
}
public function imagesItem($id)
{
$this->db->select('
`items`.`id`, `items`.`item_name`, `images`.`image_name`');
$this->db->where('items.id', $id);
$this->db->join('images', 'images.item_code = items.id');
$this->db->from('items');
$query = $this->db->get();
return $query->result_array();
}
}
这是我的控制器:
public function itemsDetail($id)
{
$data['title'] = 'Items';
$data['user'] = $this->db->get_where('user', ['email' => $this->session->userdata('email')])->row_array();
$data['itemDetail'] = $this->Items_model->dataItemsDetail($id);
$data['imagesItem'] = $this->Items_model->imagesItem($id);
$this->load->view('templates/header', $data);
$this->load->view('master/itemDetail', $data);
$this->load->view('templates/footer');
}
这是我的观点:
<div class="form-group row">
<label for="item_code" class="col-sm-2 col-form-label">Item Code</label>
<div class="col-sm-3">
<input type="text" class="form-control" value="<?= $itemDetail['item_code']; ?>" readonly>
</div>
</div>
<div class="form-group row">
<label for="item_name" class="col-sm-2 col-form-label">Item Name</label>
<div class="col-sm-6">
<input type="text" class="form-control" value="<?= $itemDetail['item_name']; ?>" readonly>
</div>
</div>
<div class="form-group row">
<label for="images" class="col-sm-2 col-form-label">Images</label>
<div class="col-sm-7">
<?php $i = 1; ?>
<?php foreach ($imagesItem as $imagesItem) : ?>
<?= $imagesItem['image_name']; ?>
<?php $i++; ?>
<?php endforeach; ?>
</div>
</div>
我想显示只有一行的项目数据,我想在视图中使用 foreach 显示多个图像。但是就是,报错,数据无法显示。
这是我来自数据库的数据
而且我想在这个视图中展示
请帮助我..谢谢..
您必须稍微重组项目的查询。第一个查询将 return 表单所需的所有 "single" 信息,第二个查询是(已经)returning 相关图像:
在您的控制器中进行更改:
public function dataItemsDetail($id)
{
$this->db->select('items.*, category.name AS category');
$this->db->where('items.id', $id);
$this->db->join('items', 'items.category_id = category.id', 'right');
$this->db->from('category');
$query = $this->db->get();
return $query->row_array();
}
public function imagesItem($id)
{
$this->db->select('items.id, items.item_name, images.image_name');
$this->db->where('items.id', $id);
$this->db->join('images', 'images.item_code = items.id');
$this->db->from('items');
$query = $this->db->get();
return $query->result_array();
}
注意: 转义是由 Codeigniter 为您完成的,请勿在您的代码中使用反引号 `
函数
提示: 您可以回显 $this->db->last_query();
并在您的 phpMyAdmin
中测试生成的 SQL
在您看来:
<div class="col-sm-7">
<?php foreach ($imagesItem as $img) : ?>
<?= $img['image_name']; ?>
<?php endforeach; ?>
</div>
我有问题。 我想显示Item详情,带注释,一个Item数据有几张图片会出现。 我按以下方式显示数据:
我有这样的模型和方法:
class Items_model extends CI_Model
{
public function dataItemsDetail($id)
{
$this->db->select('
`items`.`id`, `items`.`item_code`, `items`.`item_name`, `category`.`name` AS
`category`, `items`.`price_unit`, `items`.`rating`, `images`.`image_name`,
`items`.`description`
');
$this->db->where('items.id', $id);
$this->db->join('items', 'items.category_id = category.id', 'right');
$this->db->join('images', 'images.item_code = items.item_code', 'left');
$this->db->from('category');
$query = $this->db->get();
return $query->row_array();
}
public function imagesItem($id)
{
$this->db->select('
`items`.`id`, `items`.`item_name`, `images`.`image_name`');
$this->db->where('items.id', $id);
$this->db->join('images', 'images.item_code = items.id');
$this->db->from('items');
$query = $this->db->get();
return $query->result_array();
}
}
这是我的控制器:
public function itemsDetail($id)
{
$data['title'] = 'Items';
$data['user'] = $this->db->get_where('user', ['email' => $this->session->userdata('email')])->row_array();
$data['itemDetail'] = $this->Items_model->dataItemsDetail($id);
$data['imagesItem'] = $this->Items_model->imagesItem($id);
$this->load->view('templates/header', $data);
$this->load->view('master/itemDetail', $data);
$this->load->view('templates/footer');
}
这是我的观点:
<div class="form-group row">
<label for="item_code" class="col-sm-2 col-form-label">Item Code</label>
<div class="col-sm-3">
<input type="text" class="form-control" value="<?= $itemDetail['item_code']; ?>" readonly>
</div>
</div>
<div class="form-group row">
<label for="item_name" class="col-sm-2 col-form-label">Item Name</label>
<div class="col-sm-6">
<input type="text" class="form-control" value="<?= $itemDetail['item_name']; ?>" readonly>
</div>
</div>
<div class="form-group row">
<label for="images" class="col-sm-2 col-form-label">Images</label>
<div class="col-sm-7">
<?php $i = 1; ?>
<?php foreach ($imagesItem as $imagesItem) : ?>
<?= $imagesItem['image_name']; ?>
<?php $i++; ?>
<?php endforeach; ?>
</div>
</div>
我想显示只有一行的项目数据,我想在视图中使用 foreach 显示多个图像。但是就是,报错,数据无法显示。
这是我来自数据库的数据
而且我想在这个视图中展示
请帮助我..谢谢..
您必须稍微重组项目的查询。第一个查询将 return 表单所需的所有 "single" 信息,第二个查询是(已经)returning 相关图像:
在您的控制器中进行更改:
public function dataItemsDetail($id)
{
$this->db->select('items.*, category.name AS category');
$this->db->where('items.id', $id);
$this->db->join('items', 'items.category_id = category.id', 'right');
$this->db->from('category');
$query = $this->db->get();
return $query->row_array();
}
public function imagesItem($id)
{
$this->db->select('items.id, items.item_name, images.image_name');
$this->db->where('items.id', $id);
$this->db->join('images', 'images.item_code = items.id');
$this->db->from('items');
$query = $this->db->get();
return $query->result_array();
}
注意: 转义是由 Codeigniter 为您完成的,请勿在您的代码中使用反引号 ` 函数
提示: 您可以回显 $this->db->last_query();
并在您的 phpMyAdmin
在您看来:
<div class="col-sm-7">
<?php foreach ($imagesItem as $img) : ?>
<?= $img['image_name']; ?>
<?php endforeach; ?>
</div>