1

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

关于如何更新链接的任何帮助,可能通过共享列表?

4

1 回答 1

0

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

$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,然后只需使用“with”来仅检索必要的链接 bean。

于 2015-02-06T21:44:54.693 回答