Php 显示来自联接表的codeigniter数据

Php 显示来自联接表的codeigniter数据,php,codeigniter-3,Php,Codeigniter 3,我有个问题。 我想显示项目的详细信息,一个项目的数据有几个图像将出现。 我以以下方式显示数据: 我有这样一个模型和方法: class Items_model extends CI_Model { public function dataItemsDetail($id) { $this->db->select(' `items`.`id`, `items`.`item_code`, `items`.`item_name`, `category`.`name` AS

我有个问题。 我想显示项目的详细信息,一个项目的数据有几个图像将出现。 我以以下方式显示数据:

我有这样一个模型和方法:

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');
}
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();
}
我的观点是:

<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显示多个图像。但这是错误的,数据无法显示

这是我数据库中的数据

我想从这个角度来解释


请帮帮我。。谢谢..

您必须稍微重新构造项目的查询。第一个查询将返回表单所需的所有“单一”信息,第二个查询(已)返回相关图像:

在控制器中更改此选项:

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');
}
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>