2011-12-29 4 views
0

Надеюсь, кто-то может мне помочь. Я использую PHP некоторое время, но новичок в Codeigniter.Запуск запроса на основе результата предыдущего запроса в Codeigniter

В основном у меня есть две таблицы на двух отдельных базах данных под названием «фотографии» и «пользователи». «Фотографии» содержит информацию о фотографии, которую пользователь хочет просмотреть, а затем «пользователи» содержат информацию о пользователе, которому принадлежит эта фотография.

Вот код:

<?php if (! defined('BASEPATH')) exit('No direct script access allowed'); 

class Viewphoto_model extends CI_Model { 


    public function get_photo($id) 
    { 
     $db_photos = $this->load->database('photos', TRUE); 
     $db_photos->select('*'); 
     $db_photos->select("DATE_FORMAT(uploaddate, '%d/%m/%y') as uploaddate_formatted", FALSE); 
     $db_photos->from('photos'); 
     $db_photos->where('approved', '1'); 
     $db_photos->where('id', $id); 

     $query = $db_photos->get(); 
     return $query->row(); 
    } 
} 

Поэтому в основном она захватывает строку в базе данных на основе ID пользователя enteres в URL-адрес.

Он отлично работает.

В каждой строке таблицы «фотографии» указан идентификационный номер пользователя, который является идентификационным номером строки в базе данных/таблице пользователей. Я хочу, чтобы получить соответствующую строку из таблицы «users» на основе идентификационного номера в строке на «фотографии».

Я пытался найти ответ, но пока не повезло. Я хочу сделать соединение через 2 базы данных или передать значение из функции get_photo во вторую функцию, которая выполняет второй запрос? Как это можно сделать?

Как я мог подумать, это получить значение userid из результата первого запроса, а затем поместить его во второй запрос во 2-й функции? Как мне это сделать?

Любая помощь наиболее ценится :)

Спасибо!

ответ

1

Это должно работать теоретически, не было много практики с codeigniter AR.

$db_photos->select(
     "u.*, DATE_FORMAT(p.uploaddate, '%d/%m/%y') as uploaddate_formatted" 
     , FALSE); 
$db_photos->from('photos as p'); 
$this->db->join('users as u', 'u.id = p.user_id', 'left'); 

включает ваш ИНЕК ...

ПРИМЕЧАНИЯ {Если вы не найти пользователь, то их фото-х? }

попробовать это

//Should work Provided!! Configs are in this Order 
//$db['photos'][''] 
//$db['default'][''] 


//First Query (Users) 
$q1 = $this->db->get_where('users', array('id'=>$id)); 


//Second Query (photos) 
$db_photos = $this->load->database('photos', TRUE); 
$q2 = $db_photos->select("DATE_FORMAT(uploaddate, '%d/%m/%y') as uploaddate_formatted", FALSE) 
        ->from('photos') 
        ->where('approved', (int)1); 
        ->where('userid', $q1->row()->id) 
        ->get(); 

var_dump($q1); 
var_dump($q2); 

//you job now is to build and object/array of the combined queries 
//I dont know enough about the outcome to make those judgments 
+0

Таблицы на отдельно базах данных, хотя, как я могу сделать объединение на двух столах, расположенных на двух базах данных? –

+0

Не уверен, что если codeigniter допускает несколько подключений к базе данных, вы можете попробовать добавить новый набор правил конфигурации базы данных. SO $ config ['default'] ['..'] по умолчанию, добавить что-то вроде $ config ['connection2'] ['...'] – Philip

+0

Да, я уже создал второй набор значений базы данных для моей второй базы данных в файле конфигурации. Я просто не могу понять, как либо присоединиться к таблицам, либо, альтернативно, получить значение из поля «userid» из первого запроса, а затем использовать его во втором запросе во второй функции. –

Смежные вопросы