我又回来了另一个问题,我正在努力尝试。但我无法解决这个问题。 这是我的问题;
我有一个数据库表,省略号可以从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;
}
但我对这种解决方案不满意,还有其他办法吗?或者我必须这样使用它吗?
答案 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();
这可以为您节省数百个额外的查询。