0

我又回来了另一个问题,我正在尝试和尝试。但我无法修复它。这是我的问题;

我有一个数据库表,它的 ProvinceID 可以从 1 更改为 12。但它是省的 ID。省份以值 pName 存储在表 Provinces 中

我有以下代码来更改表,并将其与首选项表连接

$veiling = ORM::factory('veilingen')
        ->select('veilingvoorkeur.*')
        ->join('veilingvoorkeur', 'LEFT')
        ->on('veilingen.id', '=', 'veilingvoorkeur.vId')
        ->find_all();

    $this->template->content = View::factory('veiling/veilingen')
        ->bind('veiling', $veiling);    

在我拥有的视图中,它正确显示;

echo '<div class="row">';
foreach($veiling as $ve)
{   
echo $ve->provincie;    
}
?>
</div>

它显示省 id;但我想为其添加一个功能;所以它将被转换为一个省名。通常我会创建一个带有函数 getProvince($provinceId) 的 functions.php 文件

执行 mysql 查询以从 Provinces 中获取 pName 值,这就是工作。但我是新来的kohana。在 ORM 选择部分是否可以选择将省 ID 转换为省 ['pName'],还是我必须搜索另一个解决方案。我找不到:(

所以。请再帮我上路。

提前谢谢。

亲切的问候,凯文

编辑:1:08 我尝试了一些东西,它奏效了。我在视图文件中使用了 ORM,用于添加功能;

function provincie($id){
$provincie = ORM::factory('provincies', $id);
return $provincie->pName;       
}

但是我对这种解决方案不满意,还有其他方法吗?还是我必须以这种方式使用它?

4

1 回答 1

0

查看 Kohana 的ORM 关系。如果你使用它,你可以通过简单地调用来访问省份名称:

$ve->provincie->name;

关系定义可能类似于:

protected $_belongs_to = array(
    'provincie' => array(
        'model' => 'Provincie',
        'foreign_key' => 'provincie_id'
    ),
);

请注意,如果您有一个名为provincie关系定义的表列,我上面给出的将不起作用。您要么必须将表列更改为,provincie_id要么将关系重命名为 eg provincie_model

您在执行时描述的输出echo $ve->provincie;建议您将 ID 存储在名为 的列中provincie,因此上述内容适用于您。

我个人会选择第一个选项,因为我更喜欢直接访问带有_id后缀的 ID 和不带任何后缀的模型。但这取决于你。

编辑:如果您使用 Kohanas ORM 关系,您甚至可以使用初始查询加载省份,with()例如:

ORM::factory('veiling')->with('provincie')->find_all();

这可以为您节省数百个额外的查询。

于 2013-11-04T11:39:21.610 回答