CodeIgniter, Active Records получает вторые значения таблицы

Я немного запутался по этому поводу …

Я создаю просто простой блог, и я не могу получить желаемый результат из поста, все, что я хотел, — я хочу получить имя и фамилию из второй таблицы, используя userID с первого стола.

Контроллеры / posts.php:

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

}

модели / post.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>

выход:

Blog Posts

это пост
бла, бла, бла ….. «сообщение от:» должно выводить имя автора, получая идентификатор пользователя из второго значения таблицы, используя идентификатор пользователя из первой таблицы в качестве вывода ниже, помогите мне! T_T …

Автор: 2

Добавлено последнее: 20.09.2014 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>

это произойдет:

Сообщения в блоге

это пост
бла, бла, бла ….. «сообщение от:» должно выводить имя автора, получая userID из второго значения таблицы, используя userID из первой таблицы в качестве вывода ниже, помогите мне! T_T …

Сообщение от:
Обнаружена ошибка PHP

Серьезность: 4096

Сообщение: объект класса CI_DB_mysql_driver не может быть преобразован в строку

Имя файла: views / post_index.php

Номер строки: 42

Добавлено последнее: 20.09.2014 11:30:00

Читать дальше — — — Редактировать | удалять

Надеюсь, вы все понимаете структуру моего кода, более полезная помощь будет очень полезна.
Бог всех вас!

П.С .: Я нубский программист и новичок в CodeIgniter 🙂

0

Решение

Итак, что я понял из вашего вопроса, так это то, что у вас есть две таблицы с 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();

Дайте мне знать, если у вас есть какие-либо сомнения.

0

Другие решения

Других решений пока нет …

По вопросам рекламы ammmcru@yandex.ru
Adblock
detector