я расширяю свое приложение для форума, чтобы пользователи могли вести личный кабинет, и я пришел к этой таблице, которая является классом сущностей.
<?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);
}