正在CodeIgniter中获取第二个表值的活动记录


Active Records getting second table values in CodeIgniter

我只创建了一个简单的博客,但我无法从帖子中获得我想要的输出,我只想通过使用第一个表中的userID从第二个表中获得名字和姓氏。

controllers/posts.hp:

<?php
class Posts extends CI_Controller {
    function __construct() {
        parent::__construct();
        $this->load->model('post');
    }
    function index() {
        $data['posts'] = $this->post->get_posts();
        $data['users'] = $this->post->get_users();
        $this->load->view('post_index', $data);
    }
    function post($postID) {
        $data['post'] = $this->post->get_post($postID);
        $this->load->view('post', $data);
    }
    function correct_permissions($required) {
        $user_type = $this->session->userdata('user_type');
        if ($required == "User") {
            if ($user_type) {
                return true;
            }
        } elseif ($required == "Blogger") {
            if ($user_type == "Blogger") {
                return true;
            }
        }
    }
    function deletepost($postID) {
        $user_type = $this->session->userdata('user_type');
        if ($user_type != 'Blogger') {
            echo "<script>alert:('Please log in to continue.');</script>";
            redirect(base_url());
        }
        $this->post->delete_post($postID);
        redirect(base_url() . 'posts');
    }
}

型号/邮政.php

<?php
class Post extends CI_Model{
    function get_posts($num=50,$start=0){
        $this->db->select()->from('posts')->where('active',1)->order_by('date_added','desc')->limit($num,$start);
        $query = $this->db->get();
        return $query->result_array();
    }
    function get_post($postID){
        $this->db->select()->from('posts')->where(array('active'=>1,'postID'=>$postID))->order_by('date_added','desc');
        $query=$this->db->get();
        return $query->first_row('array');
    }
    function get_user($userID){
        $this->db->select()->from('users')->where(array('userID'=>$userID));
        $query=$this->db->get();
        return $query->first_row('array');
    }
    function get_users(){
        $userID = $this->session->userdata('userID');
        $this->db->select('firstname','lastname')->from('users')->where('userID',$userID);
        $query = $this->db->get();
        return $query->result_array();
    }
    function insert_post($data){
        $this->db->insert('posts',$data);
        return $this->db->insert_id();
    }
    function update_post($postID,$data){
        $this->db->where('postID',$postID);
        $this->db->update('posts',$data);
    }
    function delete_post($postID){
        $this->db->where('postID',$postID);
        $this->db->delete('posts');
    }
}

我的代码来自views/post_index.php

<div class="panel">
<?php if (!isset($posts)) { ?>
    <p>There are currently no posts on my blog.</p>
    <?php
} else {
    foreach ($posts as $row) {
        ?>
        <div class="panel-heading">
            <h2 href="<?= base_url() ?>posts/post/<?= $row['postID'] ?>"><?= $row['title'] ?></h2>
        </div>
        <div class="panel-body">
            <p><?= substr(strip_tags($row['post']), 0, 200) . "..." ?></p>
            <br><br>
            <div class="panelver">
                <h6 href="<?= base_url() ?>posts/post/<?= $row['userID'] ?>">Posted by: 
                    <?php
                    if($row['userID'] == 0) {
                        echo "Someone";
                    } else {
                        echo $this->db->select('firstname','lastname')->from('users')->where('userID',$row['userID']);
                    }
                    ?></h6>
                <p href="<?= base_url() ?>posts/post/<?= $row['postID'] ?>">Added last: <?= $row['date_added'] ?></p>
            </div>
            <p><a href="<?= base_url() ?>posts/post/<?= $row['postID'] ?>">Read More</a> - - - <a href="<?= base_url() ?>edit/editpost/<?= $row['postID'] ?>">Edit</a> | <a href="<?= base_url() ?>posts/deletepost/<?= $row['postID'] ?>">Delete</a></p>
            <hr/>
        </div>
        <?php
    }
}
?>
</div>

输出:

博客文章

这是一个帖子,废话,废话。。。。。"发布者:"必须输出author-name使用第一个表中的userID作为下面的输出,帮帮我!T_T。。。

发布者:2

上一篇:2014-09-20 11:30:00

阅读更多--编辑|删除

但当我做这个代码时:

<div class="panel">
<?php if (!isset($posts)) { ?>
    <p>There are currently no posts on my blog.</p>
    <?php
} else {
    foreach ($posts as $row) {
        ?>
        <div class="panel-heading">
            <h2 href="<?= base_url() ?>posts/post/<?= $row['postID'] ?>"><?= $row['title'] ?></h2>
        </div>
        <div class="panel-body">
            <p><?= substr(strip_tags($row['post']), 0, 200) . "..." ?></p>
            <br><br>
            <div class="panelver">
                <h6 href="<?= base_url() ?>posts/post/<?= $row['userID'] ?>">Posted by: 
                    <?php
                    if($row['userID'] == 0) {
                        echo "Someone";
                    } else {
                        echo $this->db->select('firstname','lastname')->from('users')->where('userID',$row['userID']);
                    }
                    ?></h6>
                <p href="<?= base_url() ?>posts/post/<?= $row['postID'] ?>">Added last: <?= $row['date_added'] ?></p>
            </div>
            <p><a href="<?= base_url() ?>posts/post/<?= $row['postID'] ?>">Read More</a> - - - <a href="<?= base_url() ?>edit/editpost/<?= $row['postID'] ?>">Edit</a> | <a href="<?= base_url() ?>posts/deletepost/<?= $row['postID'] ?>">Delete</a></p>
            <hr/>
        </div>
        <?php
    }
}
?>
</div>

这将发生:

博客文章

这是一个帖子,废话,废话。。。。。"postedby:"必须使用第一个表中的userID输出第二个表值中的作者名称getinguserID,请帮帮我!T_T。。。

"postedby:"必须使用第一个表中的userID作为下面的输出,输出从第二个表值获取userID的作者名称。

Posted by:
A PHP Error was encountered
Severity: 4096
Message: Object of class CI_DB_mysql_driver could not be converted to string
Filename: views/post_index.php
Line Number: 42

Added last: 2014-09-20 11:30:00
Read More - - - Edit | Delete

p.S:我是一名初级程序员,也是CodeIgniter的新手。

好的。所以我从你的问题中得到的是,你有两个表,其中一个表存储了userId,另一个表中存储了用户详细信息。所以尝试这个,因为你需要在回显之前得到行。

echo $this->db->select('firstname','lastname')->from('users')->where('userID',$row['userID'])->get()->row();

上面的代码也可以这样写:

$this->db->select('firstname','lastname')->where('userID',$row['userID'])->get('users')->row();

如果你有任何疑问,请告诉我。