我正在尝试输出对象列表作为json,并想知道是否有一种方法可以使对象可用json_encode
?我得到的代码看起来像
$related = $user->getRelatedUsers();
echo json_encode($related);
Run Code Online (Sandbox Code Playgroud)
现在,我只是遍历用户数组并单独将它们导出到数组中,json_encode
以便为我变成可用的json.我已经尝试使对象可迭代,但json_encode
似乎只是跳过它们.
编辑:这是var_dump();
php > var_dump($a);
object(RedBean_OODBBean)#14 (2) {
["properties":"RedBean_OODBBean":private]=>
array(11) {
["id"]=>
string(5) "17972"
["pk_UniversalID"]=>
string(5) "18830"
["UniversalIdentity"]=>
string(1) "1"
["UniversalUserName"]=>
string(9) "showforce"
["UniversalPassword"]=>
string(32) ""
["UniversalDomain"]=>
string(1) "0"
["UniversalCrunchBase"]=>
string(1) "0"
["isApproved"]=>
string(1) "0"
["accountHash"]=>
string(32) ""
["CurrentEvent"]=>
string(4) "1204"
["userType"]=>
string(7) "company"
}
["__info":"RedBean_OODBBean":private]=>
array(4) {
["type"]=>
string(4) "user"
["sys"]=>
array(1) {
["idfield"]=>
string(2) "id"
}
["tainted"]=>
bool(false)
["model"]=>
object(Model_User)#16 (1) {
["bean":protected]=>
*RECURSION*
} …
Run Code Online (Sandbox Code Playgroud) 我想知道,Redbean ORM可以用于社交网络应用程序等面向性能的场景,即使多个用户同时提取数千个数据,它是否也很稳定?另外我想知道Redbean是否会消耗更多的内存空间?
谁能提供Doctrine-Propel-Redbean的比较研究?
我目前正在使用RedBean 3.5版.我想我想转到最新版本的RedBean,版本4.
我没有找到有关升级过程的文档,除了表明它不简单.
我的问题是:
我有一个简单的Web应用程序,我一直在使用redbean
PHP 构建,它有一个非常简单的结构,有三种bean类型:
地区建筑人
所有关系都是独一无二的1:很多.所以,a Person
只属于1 Building
,Building
属于1 Area
.
Area
BuildingList
PersonList
Run Code Online (Sandbox Code Playgroud)
目前,我一直在开发它Sqlite3
以便于开发,但我想将数据移动到mySQL
.我已经添加了很多数据.
有没有一种简单的方法可以使用RedBean将所有bean导出到新的MySql数据库?
我知道我可以搜索sqlite
- > MySQL
/ MariaDB
转换器,但我也可能希望能够反向使用它来使迁移站点变得非常容易移动/备份/更改DB.
我在下面尝试过的:
R::setup('sqlite:/' . __DIR__ . '/data/database.db');
R::addDatabase('mysql', $MySqlConn );
$old_datas = R::findAll( 'area' );
R::selectDatabase( 'mysql' );
foreach ($old_datas as $bean) {
$new_area = R::dispense('area');
$new_area->importFrom( $bean );
$id = R::store( $new_area );
var_dump( $new_area ); // shows new data
}
var_dump( R::findAll( 'area' ) ); // returns empty …
Run Code Online (Sandbox Code Playgroud) 我在php中创建一个WebService,我的网站将用它来查询Ajax调用的信息.
起初我只是使用内置的php mysql lib以标准方式完成它,并手动编写所有查询并在MySQL Workbench中创建整个数据模型等等.这非常耗时,如果我不得不改变数据模型,之后一切都会变得非常复杂,所以我决定寻找一个PHP ORM,我发现RedBean在我看来是纯粹的魔法和快乐.
除了我在性能问题上非常困难.我的网站是一个网站,供用户创建自己的电视连续剧列表.我查询一个系列的外部源并将其插入我的数据库,如果它还没有,否则我从我自己的数据库ofc中获取它.
我从这个外部来源回来的xml列出了系列,季节,剧集等等,我把这一切都存储起来.
function InsertSerie($serie) {
$serieBean = $this->CreateSerieBean($serie->Series);
$genreBeans = $this->CreateGenreBeans($serie->Series->Genre);
$actorBeans = $this->CreateActorBeans($serie->Series->Actors);
$episodeBeans = array();
foreach ($serie->Episode as $episode) {
$episodeBean = $this->CreateEpisodeBean($episode);
$seasonBean = $this->CreateSeasonBean($episode);
$writerBeans = $this->CreateWriterBeans($episode->Writer);
$guestBeans = $this->CreateActorBeans($episode->GuestStars);
$directorBeans = $this->CreateDirectorBeans($episode->Director);
R::associate($episodeBean, $seasonBean);
foreach ($writerBeans as $bean) {
R::associate($episodeBean, $bean);
}
foreach ($guestBeans as $bean) {
R::associate($episodeBean, $bean);
}
foreach ($directorBeans as $bean) {
R::associate($episodeBean, $bean);
}
$episodeBeans[] …
Run Code Online (Sandbox Code Playgroud) 从这段代码:
$toolbox = RedBean_Setup::kickstartDev("mysql:*****************");
$r = $toolbox->getRedBean();
$test = $r->dispense("test");
$test->nom = 'Test #1';
$test->date = '2010-07-08';
$test->date_deux = '08/07/2010';
$test->num = 5;
$id = $r->store( $test );
Run Code Online (Sandbox Code Playgroud)
我得到这个SQL:
CREATE TABLE IF NOT EXISTS `test` (
`id` int(11) unsigned NOT NULL auto_increment,
`nom` varchar(255) collate utf8_unicode_ci default NULL,
`date` varchar(255) collate utf8_unicode_ci default NULL,
`num` tinyint(3) unsigned default NULL,
`date_deux` varchar(255) collate utf8_unicode_ci default NULL,
PRIMARY KEY (`id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci AUTO_INCREMENT=6 ;
--
-- Dumping data for …
Run Code Online (Sandbox Code Playgroud) 如果使用RedBean ORM,是否需要向数据库中的每个表添加名为"id"的主键?
在我的数据库中,我有一些表具有2或3个字段的主键对,或者主键与"id"之外的其他名称(是的,我可以将名称更改为"id",但它不会真正反映出现实,因为他们不是ID)
例:
table1 - 存储帖子:
id INTEGER PRIMARY KEY AUTOINCREMENT,
name TEXT,
title TEXT,
content TEXT,
Run Code Online (Sandbox Code Playgroud)
table2 - 为帖子存储元数据:
post INTEGER DEFAULT 0, # <- references "id" from "posts"
name TEXT,
value TEXT,
PRIMARY KEY(name, post),
CONSTRAINT posts_meta FOREIGN KEY(post)
REFERENCES posts(id) ON DELETE CASCADE ON UPDATE RESTRICT
Run Code Online (Sandbox Code Playgroud)
RedBean会使用这种数据库结构吗?
我正在使用RedBean ORM编写一些代码,我想知道我是否可以加载/重新启动db表中的某些字段.我知道有一个加载方法,但它将整个表作为bean.我希望只获得一些领域?
嘿,当我写它时,我开始想知道它是否不符合RedBean模式(或ORM),因为只获取一些值将创建无效(只有一些值)对象/ bean?我想做一些延迟加载的值...也许有一些其他的ORM(像RedBean一样简单:)来实现这个目标吗?
如果一个帖子有很多评论,评论与帖子基本相同(例如他们有标题,图片和音频等),我应该创建两个表还是只有一个?
例如,如果我只使用一个表,我可以有一个parent_id列,所以如果它不是对任何内容的回复,那么它将为null,否则,它将具有父帖子的id.另一方面,我可以创建一个post表和一个注释表.评论也可以回复其他评论,因此这可能会让人感到困惑.
*Post*
id
title
content
image
audio
parent_id
Run Code Online (Sandbox Code Playgroud)
要么,
*Post* *Comments*
id id
title title
content content
image author_id
audio post_id
author_id image
audio
Run Code Online (Sandbox Code Playgroud)
第二个选项允许的是创建索引.事实上,我甚至不需要添加author_id或post_id如果我从一开始就使用索引吗?
你对这个SO有什么想法?哪个会更有效率?我想为此使用redbeanphp.
我希望有一个关于如何在readbeanphp中批量插入新"bean"而不循环遍历每个实例的示例.
它显示了一个创建和保存bean的示例:http://redbeanphp.com/manual/create_a_bean
它提到了storeAll($ beans)方法,但我不确定我是如何设置格式化$ beans中的数据.
我已经尝试谷歌搜索,无法找到任何与批量插入相关的内容.也许我已经搜索了错误的条款.
我是这个ORM的新手,任何帮助都会感激,谢谢!