【问题标题】:CodeIgniter and DataMapperCodeIgniter 和 DataMapper
【发布时间】:2013-08-16 19:25:56
【问题描述】:

我在这里阅读了几篇不同的帖子,但我无法弄清楚我做错了什么。

我的数据库设置如下:

homes
- id
- address_id
- price
- etc...

address
- id
- home_id
- address1
- address2
- etc...

然后我的模型看起来像这样,浓缩。

home.php
<?php
class Home extends DataMapper {
    public var $has_one = array('address');
}

address.php
<?php
class Address extends DataMapper {
    public var $has_one = array('home');
}

然后我的控制器使用以下内容:

homes.php
class Homes extends CI_Controller {
    public function __construct()
    {
        parent::__construct();
        $this->load->library('datamapper');
    }

    public function index() {
        $homes = new Homes();
        $homes->include_related('address');
        $homes->get_iterated();

        $this->output->enable_profiler(TRUE);

        _p($homes); // Self made function that wraps a print_r() in two <pre> tags.
}
}

如果我注释掉这两行,我会得到标准 CI 返回数组。

$homes->include_related('address');
$homes->get_iterated();

如果我不这样做,我会收到服务器错误。这是我第一次使用 DataMapper,我几乎可以肯定我做错了,但不知道从哪里开始。

更新:

我发现了我的问题。我必须将 DB 表 address 更改为 addresses 并且在我的 address.php 模型中我必须指定 var $table = 'addresses';

这解决了一切。

【问题讨论】:

    标签: php codeigniter codeigniter-datamapper


    【解决方案1】:

    是的,您可以在模型中指定表名。你的例子也是错误的:

    $homes = new Homes();
    

    应该是

    $homes = new Home();
    

    我通常在我的模型中重新定义表名以确保一切正常。

    【讨论】:

    • 经过一些开发,我意识到了这一点。我仍然无法得到我想要的结果,但在这一点上,我假设我的 $has_many 变量是造成这种情况的原因。我可以得到一个结果,但相关结果列表不起作用。
    【解决方案2】:

    你们的关系是错误的。我假设您正在设置一对一的关系。医生说: http://datamapper.wanwizard.eu/pages/relationtypes.html

    因为这是一对一的关系,所以该关系可以以三种方式存储:

    1. 如图所示,在工人桌子上。
    2. 在工作场所表上,作为 worker_id
    3. 在专用的workers_workplaces 连接表上,包含id、worker_id 和workplace_id 列

    但这里您已将 *address_id* 添加到 home 并在 address 中添加 *home_id*。 你必须在开之间做出选择。例如,在 address 中保留 *home_id* 并在 home 中删除 *address_id*。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2023-03-15
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多