2013-11-13 4 views
0

Я создаю систему обмена сообщениями, используя ReadBean 3.5.1 (с MySQL). Каждый пользователь может иметь несколько сообщений, так что это просто отношения один-ко-многим для RedBean, например, так:Многократные отношения в RedBean

$sender = R::load('user', 1); 
$message = R::dispense('message'); 

$message->stuff = "Hello world"; 

$sender->ownMessage[] = $message; 

То, что я хочу сделать сейчас ассоциирует получателя пользователя сообщения, используя RedBean абстракция. Я могу получить идентификатор получателя и сохранить его в столбце в таблице messages вручную, но есть ли способ сделать это с помощью RedBean?

ответ

1

Решение на самом деле немного назад к тому, что было опубликовано. Вам нужно создать сообщение и назначить ему две пользовательские модели, а не наоборот. Вот пример:

// Make some models 
list($sender, $recipient) = R::dispense('user', 2); 
$message = R::dispense('message'); 

// Set some data 
$sender->name = 'Sender'; 
$recipient->name = 'Recipient'; 
$message->title = "Hello world"; 

// Associate users and message 
$message->sender = $sender; 
$message->recipient = $recipient; 

// Store everything 
R::store($message); 

Действительно легко. RedBean заботится о сохранении обновленной информации о пользователе, когда вызывается R::store($message). Таблица сообщений выглядит следующим образом:

+----+-------------+-----------+--------------+ 
| id | title  | sender_id | recipient_id | 
+----+-------------+-----------+--------------+ 
| 6 | Hello world |   3 |   4 | 
+----+-------------+-----------+--------------+ 
Смежные вопросы