php - Kohana添加函数返回省份名称

标签 php mysql orm kohana

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

我有一个数据库表,其中的 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);    

在我的 View 中它显示正确;

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 我尝试过一些东西,并且成功了。我在 View 文件中使用了ORM,用于添加函数;

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

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

最佳答案

查看 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();

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

关于php - Kohana添加函数返回省份名称,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19759795/

相关文章:

php - 带有 SSL 证书的 cURL 失败 : error 58 unable to set private key file

php - 在 PHP7 扩展中创建循环对象时发生内存泄漏

php - 使用php播放asx或pls格式

mysql - MySQL 中的分层数据检索速度与 XML 一样快?

node.js - 序列化复合外键

java - spring bean 错误

php - "assets"下无法识别的选项 "framework",symfony 3

php - 无法使用我的托管登录页面登录

mysql alter table 会锁表吗?

java - JPA 命名约定