Redbean更新共享列表的链接值

时间:2013-07-17 20:48:01

标签: redbean

我有两个链接在一起的表:通过attributetype_product链接的product和attributetype。链接表中包含有关其中关系的一些数据。我无法找到一种使用Redbean更新该链接表中数据的简单方法。使用link()函数设置初始数据非常简单。但是我无法弄清楚如何轻松改变这种关系。我知道在加载产品bean后我可以使用ownAttributetype_product更新该记录,但这需要我知道链接记录的ID。

有关如何通过共享列表更新链接的任何帮助吗?

1 个答案:

答案 0 :(得分:0)

我发现使这项工作的唯一方法是加载链接的bean,然后迭代它的sharedAttributeTypeList,直到我找到一个具有正确的主bean id的那个。

$project = R::dispense( 'project' );
$project->name = 'useless';
$employee = R::dispense( 'employee' );
$employee->name = 'employee';
$project->link('employee_project', [ 'role' => 'director' ])->employee;
R::store( $project );

$directors = $project
  ->with(' employee_project.role=?', [ 'director' ] )
  ->ownEmployeeList;
$director = reset( $director );
foreach( $director->xownEmployeeProjectList as $bean ){
  if( $bean->project_id == $project->id )
    break;
}

//now $bean contains the correct Employee_Project bean and can be worked on

然而,大多数情况下,我访问和考虑链接bean的方式的细微设计和范围变化使得这种访问类型变得不必要。它确实有助于查看为什么要向连接bean添加资格,然后尝试将其抽象到自己的域模型中或限制允许的访问范围,这需要通过链接bean进行查看以便您已经可以知道,在我的例子中,项目ID,员工ID或其他信息将指定您需要哪个链接bean,然后只需使用""只检索必要的链接bean。