Kohana添加功能返回省名

时间:2013-11-04 00:03:50

标签: php mysql orm kohana

我又回来了另一个问题,我正在努力尝试。但我无法解决这个问题。 这是我的问题;

我有一个数据库表,省略号可以从1改为12.但它是省的ID。各省在表省份

中存储值pName

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

连接
$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>

它显示了provincie id;但我想为它添加一个功能;所以它将转变为省名。通常我会创建一个带有函数getProvince($ provinceId)

的functions.php文件

执行mysql查询以从省份获取pName值,这是作业。但我是kohana的新手。是否有选项可以在ORM选择部分期间将省ID转换为省['pName'],或者我是否必须搜索其他解决方案。我找不到:(

因此。请再次帮助我。

提前完成。

亲切的问候, 凯文

编辑:1:08 我尝试了一些东西,但它确实奏效了。我在视图文件中使用ORM来添加函数;

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

但我对这种解决方案不满意,还有其他办法吗?或者我必须这样使用它吗?

1 个答案:

答案 0 :(得分:0)

查看Kohana的ORM relationships。如果您使用此功能,只需拨打:

即可访问省名称
$ve->provincie->name;

关系定义可能类似于:

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

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

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

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

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

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

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