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 sharedList 进行排序/排序