Php 法尔康公司;Volt:添加hasMany()/belongsTo()条件,并计算链接行
我的数据库中有两个表,Php 法尔康公司;Volt:添加hasMany()/belongsTo()条件,并计算链接行,php,phalcon,volt,Php,Phalcon,Volt,我的数据库中有两个表,form\u settings和webmaster,它们是一对多关系,这已在它们的模型中定义 FormSettings.php class FormSettings extends \Phalcon\Mvc\Model { public function initialize() { $this->hasMany('db_table', 'webmaster', 'db_table'); } } class FormS
form\u settings
和webmaster
,它们是一对多关系,这已在它们的模型中定义
FormSettings.php
class FormSettings extends \Phalcon\Mvc\Model
{
public function initialize()
{
$this->hasMany('db_table', 'webmaster', 'db_table');
}
}
class FormSettings extends \Phalcon\Mvc\Model
{
public function initialize()
{
$this->belongsTo('db_table', 'form_settings', 'db_table');
}
}
class ControllerBase extends Controller
{
public function initialize()
{
$exhibitions = FormSettings::find(
array(
'form_type = "v" AND show_end_date > NOW() AND archived = "n"',
'order' => 'db_table'
)
);
$this->view->exhibitions = $exhibitions;
}
}
Webmaster.php
class FormSettings extends \Phalcon\Mvc\Model
{
public function initialize()
{
$this->hasMany('db_table', 'webmaster', 'db_table');
}
}
class FormSettings extends \Phalcon\Mvc\Model
{
public function initialize()
{
$this->belongsTo('db_table', 'form_settings', 'db_table');
}
}
class ControllerBase extends Controller
{
public function initialize()
{
$exhibitions = FormSettings::find(
array(
'form_type = "v" AND show_end_date > NOW() AND archived = "n"',
'order' => 'db_table'
)
);
$this->view->exhibitions = $exhibitions;
}
}
在我的控制器中,我执行以下find()
并将其传递给视图:
ControllerBase.php
class FormSettings extends \Phalcon\Mvc\Model
{
public function initialize()
{
$this->hasMany('db_table', 'webmaster', 'db_table');
}
}
class FormSettings extends \Phalcon\Mvc\Model
{
public function initialize()
{
$this->belongsTo('db_table', 'form_settings', 'db_table');
}
}
class ControllerBase extends Controller
{
public function initialize()
{
$exhibitions = FormSettings::find(
array(
'form_type = "v" AND show_end_date > NOW() AND archived = "n"',
'order' => 'db_table'
)
);
$this->view->exhibitions = $exhibitions;
}
}
我知道它正确地链接了我的webmaster
表中的行,因为我的视图中有以下代码,它显示webmaster\u id
值:
指数电压
{% for exhibition in exhibitions %}
<li>
{{ link_to('index/browse/' ~ exhibition.db_table, exhibition.db_table) }}
<!-- testing below -->
{% for webm in exhibition.webmaster %}
{{ webm.webmaster_id }}
{% endfor %}
<!-- end testing -->
</li>
{% endfor %}
{%用于展览中的展览%}
{{link_to('index/browse/'~exhibition.db_table,exhibition.db_table)}
{展览中的webm为%webmaster%}
{{webm.webmaster_id}
{%endfor%}
{%endfor%}
我的问题分为三个部分:
webmaster
中包含列extra_1
的行链接为非NULL
db\u表(在form\u设置中是唯一的)创建链接的webmaster
行
$experiments
对象中的视图,以便以Volt语法回显count()
嘿,首先谢谢你提出的好问题 请原谅我使用了使用我当前数据库结构的示例。但是您可以轻松地更新代码 1)您可以为关系定义设置其他参数
$this->hasMany('id', 'Models\News', 'category_id', [
'alias' => 'news',
'reusable' => true,
'params' => [
'order' => 'id DESC',
'conditions' => 'extra_1 IS NOT NULL',
]
]);
请注意上面的可重用
。使用它时,每个请求只运行一次查询。考虑到您想要计算记录并对其进行迭代,这是一个很好的性能提升
2+3)以伏特为单位迭代结果并计数:
控制器代码:
$this->view->categories = \Models\NewsCategories::find();
伏特:
{%用于类别中的类别%}
{%if category.news | length>0%}//不打印没有文章的类别
类别{{Category.id}},共有{Category.news | length}篇文章。
{category.news%中的项目的%s}
- 新闻{{item.id}
{%endfor%}
{%endif%}
{%endfor%}
在我的例子中,上述代码生成以下输出:
第4类,共4篇文章- 新闻#3
- 新闻#4
- 新闻#5
- 新闻#7
- 新闻#1
用于类别中的类别
用于类别中的项目。新闻
不,只是不,这将导致大量数据库查询。如果您只需要选择新闻ID,那么使用group_concat使用查询生成器在与类别相同的行中选择它,并以volt正确显示它。这只是一个说明@mpdc问题的示例。他想知道如何将参数传递给模型关系,以及如何以伏特为单位计算项目。没有人说这是最佳实践:)