我有两个表user
和comment
:用户可以将评论发布给其他用户。
我希望从comment
表到user
表创建两个外键,其中一个包含评论作者user_id
,另一个包含评论所有者user_id
。
我使用此代码:
$agent->link($TB_Comment,array("comment"=>$comment, "indate"=> time()))->sharedUsers = $user ;
并在我的表(user_id , sharedUser_Id)
中创建此列
但我想将sharedUser_Id
重命名为writerId
...
我该怎么做?有没有办法在redbeanphp框架中创建具有喜欢名称的自定义forign键?
答案 0 :(得分:1)
通过您的示例,您可以使用aliases轻松实现您想要的内容(writer_id,而不是writerId)。
请参阅此代码段:
<?php
require 'rb.php'; // rb 4.2.4 (for the record)
R::setup();
list($owner, $writer) = R::dispenseAll('user*2')[0];
$owner->name = 'Owner';
$writer->name = 'Writer';
R::storeAll([$owner, $writer]);
$comment = R::dispense('comment');
$comment->user = $owner;
$comment->writer = $writer;
$commentId = R::store($comment);
// Schema with user_id & writer_id:
print_r(R::load('comment', $commentId)->export());
/*
Array
(
[id] => 4
[user_id] => 7
[writer_id] => 8
)
*/
// This fails:
$comment = R::load('comment', $commentId);
echo $comment->writer->name . ' => ' . $comment->user->name . "\n";
/*
=> Owner
*/
// But, using aliases, this works:
$comment = R::load('comment', $commentId);
echo $comment->fetchAs('user')->writer->name . ' => ' . $comment->user->name . "\n";
/*
Writer => Owner
*/
// Or, using aliases & magic:
R::setAutoResolve(true); // magic!
$comment = R::load('comment', $commentId);
echo $comment->writer->name . ' => ' . $comment->user->name . "\n";
/*
Writer => Owner
*/
答案 1 :(得分:0)
我在readbean中找到了我的问题的答案关于页面女巫绝对是不。 在this页的最后一节中写了这一段:
如果您不喜欢RedBeanPHP架构策略,并且希望完全控制数据库架构的布局,即用于主键和外键的列名,则也不应使用RedBeanPHP。在这种情况下,我建议使用:Doctrine。如果Doctrine对你的品味来说太大了,你也可以考虑一个小小的,活跃的记录,比如我的朋友写的ORM:DicaORM。