Как вставить записи, используя select в codeigniter active record - PullRequest
4 голосов
/ 29 июля 2010

Я хочу реализовать SQL-запрос с использованием класса Active Record CodeIgniter. Запрос выглядит так ..

INSERT california_authors (au_id, au_lname, au_fname)
SELECT au_id, au_lname, au_fname
FROM authors
WHERE State = 'CA'

Возможно ли это в CodeIgniter без использования метода запроса $ this-> db->?

Решение

$this->db->select('au_id, au_lname, au_fname');
$this->db->from('california_authors');
$this->db->where('state', 'CA');
$query = $this->db->get();

if($query->num_rows()) {
    $new_author = $query->result_array();

    foreach ($new_author as $row => $author) {
        $this->db->insert("authors", $author);
    }           
}

Привет

Ответы [ 2 ]

9 голосов
/ 29 июля 2010

Я думаю, что вы говорите о запросе SELECT ... INSERT, в классе активных записей нет способа сделать это, но есть два способа сделать это

1)

$query = $this->db->query('INSERT california_authors (au_id, au_lname, au_fname)
                           SELECT au_id, au_lname, au_fname
                           FROM authors
                           WHERE State = \'CA\'');

Как вы говорите

И 2) вы можете сделать это, используя то, что сказал Калле:

$select = $this->db->select('au_id, au_lname, au_fname')->where('state', 'CA')>get('california_authors');
if($select->num_rows())
{
    $insert = $this->db->insert('california_authors', $select->result_array());
}
else
{ /* there is nothing to insert */
0 голосов
/ 29 июля 2010
$query = $this->db->insert('california_authors', array('au_id' => 'value', 'au_lname' => 'value', 'au_name' => 'value'));

$query2 = $this->db->select('au_id, au_lname, au_fname')->where('state', 'CA')->get('california_authors');

Чтобы получить результат, вы можете сделать это:

$resultarr = $query->result_array(); // Return an associative array

В руководстве много информации об этом.

http://codeigniter.com/user_guide/database/active_record.html

...