2013-07-30 3 views
0

Было сложно найти заголовок. Я использую CodeIgniter с моделями/представлениями/контроллером. У меня есть следующие таблицы в моей базе данных MySQL, которые имеют отношение:codeigniter использовать часть результата запроса в другом запросе

enter image description here

В моей модели у меня есть следующие функции:

function get_shoptable() { 
    $this->db->from('productshop')->where('productId', $this->productId); 
    $query = $this->db->get(); 
    return $query->result(); 
} 

В моем контроллере я использую вышеуказанную функцию как

$data['bookshop'] = $this->Product_model->get_shoptable(); 

На мой взгляд, я предписываю книжный магазин $. Моя проблема в том, что лучший способ показать shopName, а не показывать shopId. Принимая во внимание, что книжный магазин $ должен быть таким, каким он есть (кроме shopid), потому что я создаю таблицу HTML с данными о продукте.

+0

просто не использовать shopId из результата set.either использовать оператор выбора, чтобы выбрать конкретные столбцы –

+0

Спасибо за ваш комментарий. Ваш ответ мне не очень помогает, может быть, я должен уточнить свой вопрос. Могу ли я сделать запрос, который получает все данные из магазина продуктов (с ограничением productId) и получает необходимое shopName из магазина? – Orhan

+0

@Orhan, Проверьте мой ответ. Если хотите, я могу расширить его на весь пример. –

ответ

3

Попробуйте некоторые, как это:

function get_shoptable() { 
    $this->db->from('productshop') 
    ->join('shop', 'productshop.shopId = shop.shopId') 
    ->where('productshop.productId', $this->productId); 
    $query = $this->db->get(); 
    return $query->result(); 
} 
+0

Очень круто, спасибо, что сработало! Но как это может работать, если вы не выбрали shopName? В профилировщике я вижу запрос строить как: SELECT * FROM ('productshop') JOIN' shop' ON 'productshop'.'shopId' =' shop'.'shopId' WHERE 'productshop'.' productId' = 116774 – Orhan

+0

Примите ответ, если он сработает! : D –

1

получить забывают active class от CodeIgniter для деталей функций

function get_shoptable() 
{ 
    $this->db->from('productshop') 
    $this->db->join('shop', 'productshop.shopId = shop.shopId') 
    $this->db->where('productshop.productId', $this->productId); 
    $query = $this->db->get(); 
    return $query->result(); 
} 
1

Модель:

function get_products() { 
    $this->db->select('productshop.productUrl, productshop.price, productshop.deliveryTime, productshop.shippingCast, productshop.inventory, productshop.productId, productshop.shopId, shop.shopName'); 
    $this->db->from('productshop'); 
    $this->db->join('shop', 'productshop.shopId = shop.shopId'); 
    $this->db->where('productshop.productId', $this->productId); 
    return $this->db->get()->result_array(); 
} 

Контроллер:

function products() { 
    $data['products'] = $this->model_name->get_product(); 
    $this->load->view('products', $data); 

} 

ВИД:

<?php foreach($products as $p): ?> 
<h1><?php echo $p['productUrl']; ?></h1> 
<h1><?php echo $p['shopName']; ?></h1> 
<?php endforeach(); ?> 
Смежные вопросы