2012-10-03 65 views
1

所以,我一直在嘗試在我的最新項目中使用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)。

+0

這可能與你的模板引擎的一個問題。 RedBean按需提取bean數據,也許你使用的引擎會覆蓋這種行爲。 – mav

回答

0

好吧,我發現了一個解決辦法,但我不認爲這是做事的最有效的方式...

$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 
    )); 
});