如何使用redbeanphp中的自定义名称创建外键
我有两个表user
和comment
:用户可以向其他用户发表评论。如何使用redbeanphp中的自定义名称创建外键
我想从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键?
用你的例子,你可以实现非常接近的东西(writer_id,而不是writerId),你可以很容易地使用aliases。
看到这个片断:
<?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
*/
我找到了我的问题在readbean关于页面女巫的答案绝对是不是。 在最后一节this页的这一段写着:
你也不应使用RedBeanPHP,如果你不喜欢RedBeanPHP架构策略和您想要对数据库架构的布局完全控制,即列用于主键和外键的名称。在这种情况下,我建议使用:教义。如果学说对您的口味太大,您可能还会考虑像我的朋友写的ORM这样的小型活跃记录:DicaORM。
这是RedBeanPHP这里是正确的,主要作者。 RedBeanPHP专注于高速发展和极高的生产力。这当然是有代价的,你对模式的控制很少。但是,可以更改外键的名称,RedBeanPHP能够识别架构自定义并且不会触及它们。 –
现在你可以指导我在redbean php中创建自定义模式吗?这意味着我必须先在我的数据库中创建我的外键?然后在我的代码中使用那些? –
你让我的一天感谢你 –