Выполнить запрос на основе результата предыдущего запроса в Codeigniter - PullRequest
0 голосов
/ 29 декабря 2011

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

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

Вот код:

<?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();
    }
}

Таким образом, он в основном захватывает строку в базе данных на основе идентификатора, который пользователь вводит в URL.

Работает нормально.

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

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

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

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

Спасибо!

1 Ответ

1 голос
/ 29 декабря 2011

Это должно работать в теории, не было большой практики с 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');

включает ваши предложения where ...

NOTE {Если вы не находите пользователей, то ихфото ?}

попробуйте

//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
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...