我正在开发一个多语言项目,我需要帮助从数据库中获取正确的语言。
在我的会话中,我已经从数据库tabe中存储了lang代码和id:
DB TABLE语言
ID lang_code lang
1 en-us English (US)
2 es-ES Spanish (ES)
3 de-DE Deutsch (DE)
然后我有两个菜单表
DB TABLE菜单
ID parent link
1 null intro/
2 null about/
3 null terms/
和DB TABLE menu_translation
ID menu_id lang_id title
1 1 1 Intro
2 2 1 About
3 3 1 Terms & Conditions
4 1 2 Intro
在我的模特中我做了这个
模型语言
<?php
class Languages extends Phalcon\Mvc\Model {
public $id;
public $lang_code;
public $lang;
}
模特菜单
<?php
class Menu extends Phalcon\Mvc\Model {
public $id;
public $parent;
public $link;
public function initialize() {
$this->hasMany('id', 'Menu', 'parent');
}
}
这个父母因为我有嵌套菜单所以我需要把哪个菜单放在哪个菜单中。
MODEL MenuTranslation
<?php
class MenuTranslation extends Phalcon\Mvc\Model {
public $id;
public $menu_id;
public $lang_id;
public $title;
}
我的问题是如何设置关系,所以我只能获得在会话中设置的语言的MenuTranslation,所以稍后我可以显示如下内容:
{% for item in menu %}
{{ menu.menuTranslation.title }}
{% endfor %}
它是否可能,如果是这样我怎么办?
答案 0 :(得分:1)
菜单模型中的关系错误。
模特菜单
<?php
class Menu extends Phalcon\Mvc\Model {
public $id;
public $parent;
public $link;
public function initialize() {
$this->hasMany('id', 'MenuTranslation', 'menu_id');
}
}
MODEL MenuTranslation
<?php
class MenuTranslation extends Phalcon\Mvc\Model {
public $id;
public $menu_id;
public $lang_id;
public $title;
public function initialize()
{
$this->hasMany('menu_id', 'Menu', 'id');
$this->hasMany('lang_id', 'Languages', 'id');
}
}
模板
{% for item in menu %}
{{ menu.getMenuTranslation().getLanguages().title }}
{% endfor %}
另外,我建议你创建一个自定义查询,在1个查询中加入所有3个表。