RedBean 关系定义

Posted

技术标签:

【中文标题】RedBean 关系定义【英文标题】:RedBean relation definitions 【发布时间】:2014-03-20 09:39:45 【问题描述】:

我没有关注,我是如何在 RedBean 中准确定义关系的,不是

我有一个user,它可以有一个父user,它被认为是employer。在另一边,user 可以有 employees,它们也是 users

我将如何定义这个?

我希望界面是这样的:

$user = R::load('user', $id);
var_dump($user->hasEmployees); // show all employees
var_dump($user->ownEmployer); // show my employer

但看起来,我每次都必须像这样定义它们:

$user->hasEmployees = R::findAll('user', 'employer_id = ?', array($user->id));
$user->ownEmployer  = R::load('user', $user->employer_id);

哪种方式违背了拥有动态系统的目的。由于没有真正的模型(或者不是非常广泛的模型),我假设您创建一次关系并使用它们,RedBean 知道下次这样做吗?

或者我是否必须在访问模型时定义这种关系? (在这种情况下我可以在模型中使用dispens()方法吗?)

如果是这样,它是如何工作的?

我错过了什么?

谢谢!

【问题讨论】:

【参考方案1】:

你应该看看 redbeanphp.com 上的relations section。 关系是通过严格的命名约定创建的。在你的情况下,它会像这样工作:

// Dispense the beans
list($employer, $employee1, $employee2) = R::dispense('employee', 3);

// Create relations
$employer->ownEmployeeList = array($employee1, $employee2);

// Demonstrate relations
var_dump($employer->ownEmployeeList); // returns $employee1 and $employee2
var_dump($employee1->employee); // returns $employer

【讨论】:

我是否必须在每次使用时都“创建关系”?或者我可以假设如果我在其他地方访问 $employer->ownEmployeeList 并且它在数据库中有适当的数据,它会给我带来填充列表吗? 一旦你的表被填充 $employer->ownEmployeeList 返回一个员工数组。您不需要重新创建关系。

以上是关于RedBean 关系定义的主要内容,如果未能解决你的问题,请参考以下文章

Redbean php对同一个表的多个多对多关系

如何对 Redbean sharedList 进行排序/排序

RedBean 一对多属性不起作用

我可以使用 RedBean PHP ORM 导出 Sqlite 数据库并导入到 MySQL 吗?

预打包的 Redbean 仅获取一个(最后一个)行

不能在 RedBean 中存储盒装模型?