RedBean中的多个关系

时间:2013-11-13 07:51:00

标签: php orm redbean

我正在使用ReadBean 3.5.1(使用MySQL)构建消息传递系统。每个用户可以拥有多条消息,因此这是RedBean的简单一对多关系,如下所示:

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

$message->stuff = "Hello world";

$sender->ownMessage[] = $message;

我现在要做的是使用RedBean抽象将收件人用户与消息相关联。我可以手动获取收件人的ID并将其存储在messages表的一列中,但是我可以用RedBean来实现这一点吗?

1 个答案:

答案 0 :(得分:2)

对此的解决方案实际上有点落后于发布的内容。您需要创建一条消息并为其分配两个用户模型,而不是相反。这是一个例子:

// 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 |
+----+-------------+-----------+--------------+