RedBean数据不同步
问题描述:
所以,我一直在尝试在我的最新项目中使用RedBean PHP,现在我正面临着这个奇怪的问题。RedBean数据不同步
我有一个简单的数据结构,省,国家,我有这样的代码到省数据保存到我的数据库:
$app->post('/admin/provinces/add', function() use ($app)
{
$province = R::dispense('province');
$province->name = $app->request()->post('name');
$country = R::load('country', $app->request()->post('country_id'));
$country->ownProvince[] = $province;
$errors = array();
if (!V::alpha()->notEmpty()->validate($province->name)) $errors[] = 'Province name is required!';
if (empty($errors)) {
$id = R::store($province);
R::store($country);
$app->redirect(BASE_PATH.'admin/provinces/view/'.$id, 301);
} else {
$app->flash('errors', $errors);
$app->redirect(BASE_PATH.'admin/provinces/add', 301);
}
});
此代码工作得很好,在全省乃至全国数据之间的关系已成功保存。我可以从省bean访问国家数据,反之亦然。
控制器
$app->get('/admin/provinces', function() use ($app)
{
$provinces = R::findAll('province', 'ORDER BY name');
R::preload($provinces, array('country'));
$app->render('admin/provinces/index.html.twig', array(
'provinces' => $provinces
));
});
查看:
然而,当我导入现有的全省数据从其他数据库我的数据库,我不能从省数据与此代码访问的国家数据
<table class="table table-striped table-hover">
<thead>
<tr>
<th style="width: 10%">{{ b.a("admin/provinces?order=id", "ID") }}</th>
<th style="width: 45%">{{ b.a("admin/provinces?order=provincename", "Name") }}</th>
<th style="width: 45%">{{ b.a("admin/provinces?order=provincename", "Country") }}</th>
</tr>
</thead>
<tbody>
{% for province in provinces %}
<tr>
<td>{{ province.id }}</td>
<td>{{ b.a("admin/provinces/view/"~province.id, province.name) }}</td>
<td>{{ b.a("admin/countries/view/"~province.country.id, province.country.name) }}</td>
</tr>
{% endfor %}
</tbody>
</table>
奇怪的是,这家公司德作品:
控制器
$app->get('/admin/provinces/view/:id', function ($id) use ($app)
{
$province = R::load('province', $id);
$country = $province->country;
$app->render('admin/provinces/view.html.twig', array(
'province' => $province,
'country' => $country
));
});
查看
<dl class="dl-horizontal">
<dt>Name</dt><dd>{{ province.name }}</dd>
<dt>Country</dt><dd>{{ b.a("admin/countries/view/"~country.id, country.name) }}</dd>
</dl>
那么,在哪里我哪里呢?为什么我可以从一个省份显示国家/地区数据,但我不能从多个省份获取相关国家/地区?
此外,如果我手动输入省数据,所有这些代码工作正常。但是,如果我从另一个数据库导入数据,则不起作用
顺便说一下,我使用的是最新的RedBean(昨天下载了rb.php)。
答
好吧,我发现了一个解决办法,但我不认为这是做事的最有效的方式...
$app->get('/admin/provinces', function() use ($app)
{
$provinces = R::findAll('province', 'ORDER BY name');
R::preload($provinces, array('country'));
// Reiterate through all of the beans to load the related bean
foreach ($provinces as $province) {
$province->country;
}
$app->render('admin/provinces/index.html.twig', array(
'provinces' => $provinces
));
});
这可能与你的模板引擎的一个问题。 RedBean按需提取bean数据,也许你使用的引擎会覆盖这种行为。 – mav