Создание системы, в которой пользователи могут сами использовать личное сообщение, используя PHP и ORM. - PullRequest
0 голосов
/ 09 ноября 2018

я расширяю свое приложение для форума, чтобы пользователи могли вести личный кабинет, и я пришел к этой таблице, которая является классом сущностей.

<?php
class Message{
    public $id;
    public $sender;
    public $receiver;
    public $content;
    public $sentDate;
    public $readDate;
    public $status;
    private $user;
    private $usersTable;

    public function __construct(DatabaseTable $usersTable){
        $this->usersTable = $usersTable;
    }

    public function getSender(){
        if(empty($user)){
            $this->user = $this->usersTable->findById($this->sender);
        }

        return $this->user;
    }

    public function getReceiver(){
        if(empty($user)){
            $this->user = $this->usersTable->findById($this->receiver);
        }

        return $this->user;
    }       
}

И в контроллере я создал этот метод (функция, как его называет PHP). внутри контроллера сообщений у меня есть эта функция с именем

список

public function list(){

        $user = $this->authentication->getUser();
        $page = $_GET['page'] ?? 1;

        $offset = ($page-1)*10;

        $messages = $this->messagesTable->find('receiver', $user->id, 'sentDate DESC', 10, $offset);

        $title = 'Inbox messages';

        return [
            'template' => 'listmessages.html.php',
            'title' => $title,
            'variables' => [
                'messages' => $messages,
                'user' => $user
            ]
        ];
    }

Теперь, что я могу получить, это только полученные сообщения, которые исключают отправленное. Как тогда я могу сделать так, чтобы он получал как отправленное сообщение, так и извлечение сообщения, поскольку я могу только запросить столбец в моей структуре. Это

функция поиска

находится внутри класса Database.

public function find($column, $value, $orderBy = null, $limit = null, $offset = null) {
        $query = 'SELECT * FROM ' . $this->table . ' WHERE ' . $column . ' = :value';

        $parameters = [
            'value' => $value
        ];

        if ($orderBy != null) {
            $query .= ' ORDER BY ' . $orderBy;
        }

        if ($limit != null) {
            $query .= ' LIMIT ' . $limit;
        }

        if ($offset != null) {
            $query .= ' OFFSET ' . $offset;
        }

        $query = $this->query($query, $parameters);

        return $query->fetchAll(\PDO::FETCH_CLASS, $this->className, $this->constructorArgs);
    }
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...