получение данных из 2 разных таблиц с помощью JOIN sql. Кодигнитер

Я использую codeigniter, и мне нужно получить данные из двух разных таблиц. пока он возвращает данные только из таблицыworks_image. как я могу получить данные из обеих таблиц 2?

большое спасибо!!

$this->db->select('works_image.*', 'works.*');
$this->db->from('works_image', 'works');
$this->db->join('works', 'works.id = works_image.id_work');
$result = $this->db->get();

foreach ($result->result() as $row) {
    echo " # " . $row->id . " - " . $row->thumb . " - " . $row->wname . "
"; }

person Community    schedule 24.07.2009    source источник
comment
МОЖЕТ быть, этот пост поможет вам: присоединиться   -  person Vitaliy Matveev    schedule 24.07.2017


Ответы (3)


Пока вы делаете SELECT * (Почему это плохая идея?), вам не нужно указывать таблицы с вызовом select(). По умолчанию будут выбраны все поля.

$this->db->from('works_image', 'works');
$this->db->join('works', 'works.id = works_image.id_work');
$result = $this->db->get();

Должен работать нормально.

Вместо этого вам действительно следует указать, какие именно поля вам нужны:

$this->db->select('works_image.id, works_image.name, works_image.id_work, works.id, works.name'); // (or whichever fields you're interested in)
$this->db->from('works_image', 'works');
$this->db->join('works', 'works.id = works_image.id_work');
$result = $this->db->get();

Таким образом, вы можете быть уверены, что (а) вы не извлекаете ненужные данные из своей БД и (б) ваш код не сломается, если/когда вы измените схему своей БД.

person pix0r    schedule 24.07.2009
comment
спасибо за совет :) Я использовал .*, потому что у меня уже есть только несколько параметров в таблице. это не большие столы. или вы думаете, что независимо от того, насколько мала эта таблица, я должен точно указать, какие поля мне нужны? - person ; 24.07.2009
comment
Всегда полезно, независимо от размера таблицы, указать, какие именно поля вам нужны. - person pix0r; 25.07.2009

Этот пост должен ответить на ваш вопрос: http://www.whypad.com/posts/codeigniter-activerecord-join-tip/178/

Короче говоря, вам нужно переписать оператор select из

$this->db->select('works_image.*', 'works.*');

к этому:

$this->db->select('works_image.*, works.*');

Обратите внимание, что это был первый результат в Google для «присоединения к CodeIgniter». Попробуйте сначала погуглить свои вопросы. Вы часто можете получить более быстрый ответ :)

person Michael Mior    schedule 24.07.2009
comment
На самом деле я часами искал в Google :/, чтобы найти быстрое решение, но я не мог заметить, что '' точка :/ ослепила меня! сейчас работает отлично!!! Благодарность! :) - person ; 24.07.2009

Вы должны написать ниже код

$this->db->select('works_image.*', 'works.*');
$this->db->from('works_image');
$this->db->join('works', 'works.id = works_image.id_work');
$result = $this->db->get();

foreach ($result->result() as $row) {
echo " # " . $row->id . " - " . $row->thumb . " - " . $row->wname . "
";
} 

Я думаю, что вы получите свой результат

person MD. ABDUL Halim    schedule 31.12.2012